Fix padding problem between search bar and homepage cards
Get the statusbar height dynamically to fix this problem in notch mode. Change-Id: I4ca0427fc2556f1fb5f868118c5207fdfa035c59 Fixes: 123215804 Test: robotest
This commit is contained in:
@@ -28,12 +28,11 @@
|
||||
app:layout_behavior="com.android.settings.widget.FloatingAppBarScrollingViewBehavior">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/homepage_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:descendantFocusability="blocksDescendants"
|
||||
android:paddingTop="104dp">
|
||||
<!-- height of status bar(24dp) + height of action bar(48dp) + top/bottom margins(16dp) -->
|
||||
android:descendantFocusability="blocksDescendants">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/contextual_cards_content"
|
||||
|
@@ -23,6 +23,7 @@ import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.Toolbar;
|
||||
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentTransaction;
|
||||
@@ -50,6 +51,7 @@ public class SettingsHomepageActivity extends SettingsBaseActivity {
|
||||
|
||||
updateWindowProperties();
|
||||
setContentView(R.layout.settings_homepage_container);
|
||||
setHomepageContainerPaddingTop();
|
||||
|
||||
final Toolbar toolbar = findViewById(R.id.search_action_bar);
|
||||
FeatureFactory.getFactory(this).getSearchFeatureProvider()
|
||||
@@ -86,4 +88,19 @@ public class SettingsHomepageActivity extends SettingsBaseActivity {
|
||||
|
||||
getWindow().setStatusBarColor(getResources().getColor(R.color.homepage_status_bar_color));
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
void setHomepageContainerPaddingTop() {
|
||||
final View view = this.findViewById(R.id.homepage_container);
|
||||
|
||||
final int statusBarHeight = getResources().getDimensionPixelSize(
|
||||
com.android.internal.R.dimen.status_bar_height);
|
||||
final int searchBarHeight = getResources().getDimensionPixelSize(R.dimen.search_bar_height);
|
||||
final int searchBarMargin = getResources().getDimensionPixelSize(R.dimen.search_bar_margin);
|
||||
|
||||
// The top padding is the height of status bar + height of action bar(48dp) + top/bottom
|
||||
// margins(16dp)
|
||||
final int paddingTop = statusBarHeight + searchBarHeight + searchBarMargin * 2;
|
||||
view.setPadding(0 /* left */, paddingTop, 0 /* right */, 0 /* bottom */);
|
||||
}
|
||||
}
|
@@ -19,7 +19,9 @@ package com.android.settings.homepage;
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import android.util.FeatureFlagUtils;
|
||||
import android.view.View;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.SettingsActivity;
|
||||
import com.android.settings.core.FeatureFlags;
|
||||
|
||||
@@ -44,4 +46,23 @@ public class SettingsHomepageActivityTest {
|
||||
assertThat(shadowActivity.getNextStartedActivity().getComponent().getClassName())
|
||||
.isEqualTo(SettingsActivity.class.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setHomepageContainerPaddingTop_shouldBeSetPaddingTop() {
|
||||
final SettingsHomepageActivity activity = Robolectric.buildActivity(
|
||||
SettingsHomepageActivity.class).create().get();
|
||||
final int statusBarHeight = activity.getResources().getDimensionPixelSize(
|
||||
com.android.internal.R.dimen.status_bar_height);
|
||||
final int searchBarHeight = activity.getResources().getDimensionPixelSize(
|
||||
R.dimen.search_bar_height);
|
||||
final int searchBarMargin = activity.getResources().getDimensionPixelSize(
|
||||
R.dimen.search_bar_margin);
|
||||
final View view = activity.findViewById(R.id.homepage_container);
|
||||
|
||||
activity.setHomepageContainerPaddingTop();
|
||||
|
||||
final int actualPaddingTop = view.getPaddingTop();
|
||||
assertThat(actualPaddingTop).isEqualTo(
|
||||
statusBarHeight + searchBarHeight + searchBarMargin * 2);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user