diff options
author | Chris Poultney <poultney@google.com> | 2022-09-21 18:55:05 +0000 |
---|---|---|
committer | Chris Poultney <poultney@google.com> | 2022-09-22 15:32:10 +0000 |
commit | fddd5a6d80f5e68a753660905356cfe6cbc9613a (patch) | |
tree | 8de344aba861a8c93b72c808a154882c0a58b995 /src/com/android | |
parent | 92b3661ab7b37d3dd01c139609c821ed298534b6 (diff) | |
download | ThemePicker-fddd5a6d80f5e68a753660905356cfe6cbc9613a.tar.gz |
Fixes color choice layout issue.
Color theme picker size calculation had a bug that caused incorrect column count after scrolling through all pages of choices.
Before: http://screen/BZdSY8NLSUTiz4z
After: http://screen/4hAF2UpX2nsYrrH
Bug: 248080123
Test: TreeHugger
Change-Id: Ia17b03d9b1eaa1b102072fa201cae033222199f7
Diffstat (limited to 'src/com/android')
-rw-r--r-- | src/com/android/customization/widget/OptionSelectorController.java | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/src/com/android/customization/widget/OptionSelectorController.java b/src/com/android/customization/widget/OptionSelectorController.java index 33d2198f..ffd70e0a 100644 --- a/src/com/android/customization/widget/OptionSelectorController.java +++ b/src/com/android/customization/widget/OptionSelectorController.java @@ -293,17 +293,18 @@ public class OptionSelectorController<T extends CustomizationOption<T>> { .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) - 2 * padding; + R.dimen.section_horizontal_padding); final int availableWidth = (fixWidth != 0) ? fixWidth : availableDynamicWidth; final boolean hasDecoration = mContainer.getItemDecorationCount() != 0; - final int widthPerItem = res.getDimensionPixelSize(R.dimen.option_tile_width) + ( - hasDecoration ? 0 : 2 * padding); if (mUseGrid) { int numColumns = res.getInteger(R.integer.options_grid_num_columns); GridLayoutManager gridLayoutManager = new GridLayoutManager(mContainer.getContext(), numColumns); mContainer.setLayoutManager(gridLayoutManager); + if (!hasDecoration) { + mContainer.addItemDecoration(new GridPaddingDecoration(padding, 0)); + } // Measure RecyclerView to get to the total amount of space used by all options. mContainer.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED); while (mContainer.getMeasuredWidth() > availableWidth && numColumns > 1) { @@ -311,14 +312,12 @@ public class OptionSelectorController<T extends CustomizationOption<T>> { gridLayoutManager.setSpanCount(numColumns); mContainer.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED); } - - if (!hasDecoration) { - mContainer.addItemDecoration(new GridPaddingDecoration(padding, 0)); - if (numColumns > 1) { - mContainer.addItemDecoration(new GridRowSpacerDecoration(2 * padding)); - } + if (!hasDecoration && numColumns > 1) { + mContainer.addItemDecoration(new GridRowSpacerDecoration(2 * padding)); } } else { + final int widthPerItem = res.getDimensionPixelSize(R.dimen.option_tile_width) + ( + hasDecoration ? 0 : 2 * padding); mContainer.setLayoutManager(new LinearLayoutManager(mContainer.getContext(), LinearLayoutManager.HORIZONTAL, false)); int extraSpace = availableWidth - mContainer.getMeasuredWidth(); |