Fix overlap between app grid options in wallpaper settings. am: e04905c616

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/ThemePicker/+/20446953

Change-Id: Iec4416ff3d5c617cc646dbbe66cba0ef2877b5e7
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/src/com/android/customization/widget/OptionSelectorController.java b/src/com/android/customization/widget/OptionSelectorController.java
index ffd70e0..95924fa 100644
--- a/src/com/android/customization/widget/OptionSelectorController.java
+++ b/src/com/android/customization/widget/OptionSelectorController.java
@@ -291,13 +291,13 @@
         final DisplayMetrics metrics = new DisplayMetrics();
         mContainer.getContext().getSystemService(WindowManager.class)
                 .getDefaultDisplay().getMetrics(metrics);
-        // This is based on the assumption that the parent view is the same width as the screen.
-        final int availableDynamicWidth = metrics.widthPixels - 2 * res.getDimensionPixelSize(
-                R.dimen.section_horizontal_padding);
-        final int availableWidth = (fixWidth != 0) ? fixWidth : availableDynamicWidth;
         final boolean hasDecoration = mContainer.getItemDecorationCount() != 0;
 
         if (mUseGrid) {
+            // This is based on the assumption that the parent view is the same width as the screen.
+            final int availableDynamicWidth = metrics.widthPixels - 2 * res.getDimensionPixelSize(
+                    R.dimen.section_horizontal_padding);
+            final int availableWidth = (fixWidth != 0) ? fixWidth : availableDynamicWidth;
             int numColumns = res.getInteger(R.integer.options_grid_num_columns);
             GridLayoutManager gridLayoutManager = new GridLayoutManager(mContainer.getContext(),
                     numColumns);
@@ -320,6 +320,8 @@
                     hasDecoration ? 0 : 2 * padding);
             mContainer.setLayoutManager(new LinearLayoutManager(mContainer.getContext(),
                     LinearLayoutManager.HORIZONTAL, false));
+            mContainer.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
+            int availableWidth = metrics.widthPixels;
             int extraSpace = availableWidth - mContainer.getMeasuredWidth();
             if (extraSpace >= 0) {
                 mContainer.setOverScrollMode(View.OVER_SCROLL_NEVER);
@@ -331,10 +333,8 @@
                         - mContainer.getPaddingLeft();
                 int itemEndMargin =
                         spaceBetweenItems / (int) mLinearLayoutHorizontalDisplayOptionsMax;
-                if (itemEndMargin <= 0) {
-                    itemEndMargin = res.getDimensionPixelOffset(
-                            R.dimen.option_tile_margin_horizontal);
-                }
+                itemEndMargin = Math.max(itemEndMargin, res.getDimensionPixelOffset(
+                        R.dimen.option_tile_margin_horizontal));
                 mContainer.addItemDecoration(new ItemEndHorizontalSpaceItemDecoration(
                         mContainer.getContext(), itemEndMargin));
                 return;