summaryrefslogtreecommitdiff
path: root/src/com/android
diff options
context:
space:
mode:
authorChris Poultney <poultney@google.com>2022-09-21 18:55:05 +0000
committerChris Poultney <poultney@google.com>2022-09-22 15:32:10 +0000
commitfddd5a6d80f5e68a753660905356cfe6cbc9613a (patch)
tree8de344aba861a8c93b72c808a154882c0a58b995 /src/com/android
parent92b3661ab7b37d3dd01c139609c821ed298534b6 (diff)
downloadThemePicker-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.java17
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();