From 13808e71a7e8fbbbed4980f3519ef46463297071 Mon Sep 17 00:00:00 2001 From: Daosheng Mu Date: Thu, 9 May 2019 01:09:15 -0700 Subject: [PATCH] According to words' width to add rows. (#1173) --- .../ui/views/AutoCompletionView.java | 29 ++++++++++++++----- app/src/main/res/values/dimen.xml | 1 + 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/views/AutoCompletionView.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/views/AutoCompletionView.java index 9d6ce8fbb..a2a963e0c 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/views/AutoCompletionView.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/views/AutoCompletionView.java @@ -29,10 +29,10 @@ public class AutoCompletionView extends FrameLayout { private View mSeparator; private int mKeyWidth; private int mKeyHeight; + private int mLineWidth; private int mLineHeight; private UIButton mExtendButton; private int mExtendedHeight; - private final int kMaxItemsPerLine = 15; private ArrayList mExtraItems = new ArrayList<>(); private boolean mIsExtended; private Delegate mDelegate; @@ -73,6 +73,7 @@ private void initialize(Context aContext) { } }); mKeyWidth = mKeyHeight = WidgetPlacement.pixelDimension(getContext(), R.dimen.autocompletion_widget_button_size); + mLineWidth = WidgetPlacement.pixelDimension(getContext(), R.dimen.autocompletion_widget_line_width); mLineHeight = WidgetPlacement.pixelDimension(getContext(), R.dimen.autocompletion_widget_line_height); mExtendedHeight = mLineHeight * 6; setFocusable(false); @@ -124,16 +125,22 @@ public void setItems(List aItems) { } int n = 0; + int currentWidth = 0; + for (Words item : aItems) { - if (n < kMaxItemsPerLine) { - mFirstLine.addView(createButton(item, clickHandler)); + UITextButton textBtn = createButton(item, clickHandler); + textBtn.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED); + currentWidth += textBtn.getMeasuredWidth(); + + if (currentWidth < mLineWidth) { + mFirstLine.addView(textBtn); } else { mExtraItems.add(item); } n++; } - mExtendButton.setVisibility(n >= kMaxItemsPerLine ? View.VISIBLE : View.GONE); + mExtendButton.setVisibility(currentWidth >= mLineWidth ? View.VISIBLE : View.GONE); } public boolean isExtended() { @@ -152,14 +159,22 @@ public boolean isExtended() { private void layoutExtendedItems() { int index = 0; + int currentWidth = 0; LinearLayout current = createRow(); + for (Words item: mExtraItems) { - current.addView(createButton(item, clickHandler)); - index++; - if (index > kMaxItemsPerLine) { + UITextButton textBtn = createButton(item, clickHandler); + textBtn.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED); + currentWidth += textBtn.getMeasuredWidth(); + + if (currentWidth < mLineWidth) { + current.addView(textBtn); + index++; + } else { mExtendContent.addView(current); current = createRow(); index = 0; + currentWidth = 0; } } if (index > 0) { diff --git a/app/src/main/res/values/dimen.xml b/app/src/main/res/values/dimen.xml index 82087be6a..201676c10 100644 --- a/app/src/main/res/values/dimen.xml +++ b/app/src/main/res/values/dimen.xml @@ -103,6 +103,7 @@ 2.5 + 530dp 36dp 160dp 4dp