diff --git a/res/layout/settings_homepage_container.xml b/res/layout/settings_homepage_container.xml index 4f0d8049c6c..f0aafe12dc0 100644 --- a/res/layout/settings_homepage_container.xml +++ b/res/layout/settings_homepage_container.xml @@ -19,7 +19,6 @@ xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/settings_homepage_container" - android:fitsSystemWindows="true" android:layout_width="match_parent" android:layout_height="match_parent"> diff --git a/src/com/android/settings/homepage/SettingsHomepageActivity.java b/src/com/android/settings/homepage/SettingsHomepageActivity.java index c56d89b1a3a..051a54ad9cc 100644 --- a/src/com/android/settings/homepage/SettingsHomepageActivity.java +++ b/src/com/android/settings/homepage/SettingsHomepageActivity.java @@ -32,12 +32,17 @@ import android.util.ArraySet; import android.util.FeatureFlagUtils; import android.util.Log; import android.view.View; +import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.Toolbar; +import androidx.core.graphics.Insets; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowCompat; +import androidx.core.view.WindowInsetsCompat; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; @@ -96,7 +101,7 @@ public class SettingsHomepageActivity extends FragmentActivity implements void onHomepageLoaded(); } - private interface FragmentBuilder { + private interface FragmentBuilder { T build(); } @@ -149,7 +154,9 @@ public class SettingsHomepageActivity extends FragmentActivity implements @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + setupEdgeToEdge(); setContentView(R.layout.settings_homepage_container); + mIsEmbeddingActivityEnabled = ActivityEmbeddingUtils.isEmbeddingActivityEnabled(this); mSplitController = SplitController.getInstance(); mIsTwoPane = mSplitController.isActivityEmbedded(this); @@ -224,6 +231,24 @@ public class SettingsHomepageActivity extends FragmentActivity implements } } + private void setupEdgeToEdge() { + WindowCompat.setDecorFitsSystemWindows(getWindow(), false); + ViewCompat.setOnApplyWindowInsetsListener(findViewById(android.R.id.content), + (v, windowInsets) -> { + Insets insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()); + // Apply the insets as a margin to the view. Here the system is setting + // only the top dimensions. + ViewGroup.MarginLayoutParams mlp = + (ViewGroup.MarginLayoutParams) v.getLayoutParams(); + mlp.topMargin = insets.top; + v.setLayoutParams(mlp); + + // Return CONSUMED if you don't want the window insets to keep being + // passed down to descendant views. + return WindowInsetsCompat.CONSUMED; + }); + } + private void initSearchBarView() { final Toolbar toolbar = findViewById(R.id.search_action_bar); FeatureFactory.getFactory(this).getSearchFeatureProvider() @@ -265,7 +290,7 @@ public class SettingsHomepageActivity extends FragmentActivity implements // Update status bar color window.setStatusBarColor(color); // Update content background. - findViewById(R.id.settings_homepage_container).setBackgroundColor(color); + findViewById(android.R.id.content).setBackgroundColor(color); } private void showSuggestionFragment(boolean scrollNeeded) {