Merge "Fix padding problem between search bar and homepage cards"
diff --git a/res/layout/settings_homepage_container.xml b/res/layout/settings_homepage_container.xml
index 1e5bdce..45d0861 100644
--- a/res/layout/settings_homepage_container.xml
+++ b/res/layout/settings_homepage_container.xml
@@ -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"
diff --git a/src/com/android/settings/homepage/SettingsHomepageActivity.java b/src/com/android/settings/homepage/SettingsHomepageActivity.java
index 9acda68..ff27ff2 100644
--- a/src/com/android/settings/homepage/SettingsHomepageActivity.java
+++ b/src/com/android/settings/homepage/SettingsHomepageActivity.java
@@ -23,6 +23,7 @@
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 @@
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 @@
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 */);
+ }
}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java b/tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java
index 1af8c32..b100460 100644
--- a/tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java
+++ b/tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java
@@ -19,7 +19,9 @@
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 @@
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);
+ }
}