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">
|
app:layout_behavior="com.android.settings.widget.FloatingAppBarScrollingViewBehavior">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
android:id="@+id/homepage_container"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:descendantFocusability="blocksDescendants"
|
android:descendantFocusability="blocksDescendants">
|
||||||
android:paddingTop="104dp">
|
|
||||||
<!-- height of status bar(24dp) + height of action bar(48dp) + top/bottom margins(16dp) -->
|
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@+id/contextual_cards_content"
|
android:id="@+id/contextual_cards_content"
|
||||||
|
@@ -23,6 +23,7 @@ import android.view.View;
|
|||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.Toolbar;
|
import android.widget.Toolbar;
|
||||||
|
|
||||||
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.fragment.app.FragmentManager;
|
import androidx.fragment.app.FragmentManager;
|
||||||
import androidx.fragment.app.FragmentTransaction;
|
import androidx.fragment.app.FragmentTransaction;
|
||||||
@@ -50,6 +51,7 @@ public class SettingsHomepageActivity extends SettingsBaseActivity {
|
|||||||
|
|
||||||
updateWindowProperties();
|
updateWindowProperties();
|
||||||
setContentView(R.layout.settings_homepage_container);
|
setContentView(R.layout.settings_homepage_container);
|
||||||
|
setHomepageContainerPaddingTop();
|
||||||
|
|
||||||
final Toolbar toolbar = findViewById(R.id.search_action_bar);
|
final Toolbar toolbar = findViewById(R.id.search_action_bar);
|
||||||
FeatureFactory.getFactory(this).getSearchFeatureProvider()
|
FeatureFactory.getFactory(this).getSearchFeatureProvider()
|
||||||
@@ -86,4 +88,19 @@ public class SettingsHomepageActivity extends SettingsBaseActivity {
|
|||||||
|
|
||||||
getWindow().setStatusBarColor(getResources().getColor(R.color.homepage_status_bar_color));
|
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 static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
import android.util.FeatureFlagUtils;
|
import android.util.FeatureFlagUtils;
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
|
import com.android.settings.R;
|
||||||
import com.android.settings.SettingsActivity;
|
import com.android.settings.SettingsActivity;
|
||||||
import com.android.settings.core.FeatureFlags;
|
import com.android.settings.core.FeatureFlags;
|
||||||
|
|
||||||
@@ -44,4 +46,23 @@ public class SettingsHomepageActivityTest {
|
|||||||
assertThat(shadowActivity.getNextStartedActivity().getComponent().getClassName())
|
assertThat(shadowActivity.getNextStartedActivity().getComponent().getClassName())
|
||||||
.isEqualTo(SettingsActivity.class.getName());
|
.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