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