Fix BottomActionBar overlay with Navigation bar.
Bug: 156063455
Change-Id: Ic9ee86f230141594dca4ba7566102aced01c7722
diff --git a/res/layout/activity_top_level_picker.xml b/res/layout/activity_top_level_picker.xml
index 4b257c5..101cee1 100755
--- a/res/layout/activity_top_level_picker.xml
+++ b/res/layout/activity_top_level_picker.xml
@@ -15,7 +15,8 @@
-->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
- android:layout_height="match_parent">
+ android:layout_height="match_parent"
+ android:background="?android:colorPrimary">
<FrameLayout
android:id="@+id/fragment_container"
diff --git a/res/layout/fragment_category_selector.xml b/res/layout/fragment_category_selector.xml
index 6f74eb4..f00ac03 100644
--- a/res/layout/fragment_category_selector.xml
+++ b/res/layout/fragment_category_selector.xml
@@ -19,7 +19,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false"
- android:fitsSystemWindows="true"
android:paddingHorizontal="@dimen/grid_edge_space"
android:scrollbarSize="@dimen/grid_padding"
android:scrollbarStyle="outsideOverlay"
diff --git a/res/layout/fragment_individual_picker.xml b/res/layout/fragment_individual_picker.xml
index 2b8c25b..3553cd3 100755
--- a/res/layout/fragment_individual_picker.xml
+++ b/res/layout/fragment_individual_picker.xml
@@ -30,7 +30,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false"
- android:fitsSystemWindows="true"
android:paddingHorizontal="@dimen/grid_edge_space"
android:scrollbarSize="@dimen/grid_padding"
android:scrollbarStyle="outsideOverlay"
diff --git a/src/com/android/wallpaper/picker/CategoryFragment.java b/src/com/android/wallpaper/picker/CategoryFragment.java
index 29760f5..4672dd9 100755
--- a/src/com/android/wallpaper/picker/CategoryFragment.java
+++ b/src/com/android/wallpaper/picker/CategoryFragment.java
@@ -215,7 +215,7 @@
});
setupCurrentWallpaperPreview(view);
- View fragmentContainer = view.findViewById(R.id.category_fragment_container);
+ ViewGroup fragmentContainer = view.findViewById(R.id.category_fragment_container);
mBottomSheetBehavior = BottomSheetBehavior.from(fragmentContainer);
mBottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
@Override
@@ -252,6 +252,16 @@
getActivity(), mLockscreenPreview.getMeasuredWidth()));
}
}});
+ fragmentContainer.setOnHierarchyChangeListener(new ViewGroup.OnHierarchyChangeListener() {
+ @Override
+ public void onChildViewAdded(View parent, View child) {
+ child.requestApplyInsets();
+ }
+
+ @Override
+ public void onChildViewRemoved(View parent, View child) {
+ }
+ });
mPreviewUtils = new PreviewUtils(getContext(),
getString(R.string.grid_control_metadata_name));
diff --git a/src/com/android/wallpaper/picker/CategorySelectorFragment.java b/src/com/android/wallpaper/picker/CategorySelectorFragment.java
index 733aeb1..c88207e 100644
--- a/src/com/android/wallpaper/picker/CategorySelectorFragment.java
+++ b/src/com/android/wallpaper/picker/CategorySelectorFragment.java
@@ -110,6 +110,11 @@
GridLayoutManager gridLayoutManager = new GridLayoutManager(getActivity(), getNumColumns());
mImageGrid.setLayoutManager(gridLayoutManager);
+ mImageGrid.setOnApplyWindowInsetsListener((v, windowInsets) -> {
+ v.setPadding(v.getPaddingLeft(), v.getPaddingTop(), v.getPaddingRight(),
+ windowInsets.getSystemWindowInsetBottom());
+ return windowInsets;
+ });
return view;
}
diff --git a/src/com/android/wallpaper/picker/individual/IndividualPickerActivity.java b/src/com/android/wallpaper/picker/individual/IndividualPickerActivity.java
index 57d16de..1a2cae9 100755
--- a/src/com/android/wallpaper/picker/individual/IndividualPickerActivity.java
+++ b/src/com/android/wallpaper/picker/individual/IndividualPickerActivity.java
@@ -22,12 +22,9 @@
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources.NotFoundException;
-import android.graphics.Insets;
import android.os.Bundle;
import android.util.Log;
import android.view.MenuItem;
-import android.view.View;
-import android.view.WindowInsets;
import android.widget.Toast;
import androidx.appcompat.widget.Toolbar;
@@ -35,7 +32,6 @@
import androidx.fragment.app.FragmentManager;
import com.android.wallpaper.R;
-import com.android.wallpaper.compat.BuildCompat;
import com.android.wallpaper.model.Category;
import com.android.wallpaper.model.CategoryProvider;
import com.android.wallpaper.model.CategoryReceiver;
@@ -149,38 +145,6 @@
toolbar.getNavigationIcon().setTint(getColor(R.color.toolbar_icon_color));
toolbar.getNavigationIcon().setAutoMirrored(true);
- getWindow().getDecorView().setSystemUiVisibility(
- getWindow().getDecorView().getSystemUiVisibility()
- | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
- | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
- ((View) findViewById(R.id.fragment_container).getParent())
- .setOnApplyWindowInsetsListener((view, windowInsets) -> {
- view.setPadding(
- view.getPaddingLeft(),
- windowInsets.getSystemWindowInsetTop(),
- view.getPaddingRight(),
- view.getPaddingBottom());
- // Consume only the top inset (status bar),
- // to let other content in the Activity consume the nav bar
- // (ie, by using "fitSystemWindows")
- if (BuildCompat.isAtLeastQ()) {
- WindowInsets.Builder builder = new WindowInsets.Builder(windowInsets);
- builder.setSystemWindowInsets(
- Insets.of(
- windowInsets.getSystemWindowInsetLeft(),
- /* top= */ 0,
- windowInsets.getStableInsetRight(),
- windowInsets.getSystemWindowInsetBottom()));
- return builder.build();
- } else {
- return windowInsets.replaceSystemWindowInsets(
- windowInsets.getSystemWindowInsetLeft(),
- /* top= */ 0,
- windowInsets.getStableInsetRight(),
- windowInsets.getSystemWindowInsetBottom());
- }
- });
-
if (fragment == null) {
fragment = InjectorProvider.getInjector()
.getIndividualPickerFragment(mCategoryCollectionId);
diff --git a/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java b/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java
index bc27e49..798945e 100755
--- a/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java
+++ b/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java
@@ -453,6 +453,11 @@
}
mImageGrid.addItemDecoration(new GridPaddingDecoration(
getResources().getDimensionPixelSize(R.dimen.grid_padding)));
+ mImageGrid.setOnApplyWindowInsetsListener((v, windowInsets) -> {
+ v.setPadding(v.getPaddingLeft(), v.getPaddingTop(), v.getPaddingRight(),
+ windowInsets.getSystemWindowInsetBottom());
+ return windowInsets;
+ });
maybeSetUpImageGrid();
setUpBottomSheet();
diff --git a/src/com/android/wallpaper/widget/BottomActionBar.java b/src/com/android/wallpaper/widget/BottomActionBar.java
index 90e3197..6353d69 100644
--- a/src/com/android/wallpaper/widget/BottomActionBar.java
+++ b/src/com/android/wallpaper/widget/BottomActionBar.java
@@ -120,6 +120,12 @@
@Override
public void onSlide(@NonNull View bottomSheet, float slideOffset) {}
});
+
+ setOnApplyWindowInsetsListener((v, windowInsets) -> {
+ v.setPadding(v.getPaddingLeft(), v.getPaddingTop(), v.getPaddingRight(),
+ windowInsets.getSystemWindowInsetBottom());
+ return windowInsets;
+ });
}
@Override