Fix two line item of app-title only in A-Z list and not predicted app row
Create protected method that would be overidden if two lines should be supported
bug: 274686392
test: manual
Change-Id: I34bbd9980aee70397ee75744bedfa61c340a2741
diff --git a/quickstep/src/com/android/launcher3/appprediction/PredictionRowView.java b/quickstep/src/com/android/launcher3/appprediction/PredictionRowView.java
index 3510fbe..34316db 100644
--- a/quickstep/src/com/android/launcher3/appprediction/PredictionRowView.java
+++ b/quickstep/src/com/android/launcher3/appprediction/PredictionRowView.java
@@ -36,6 +36,7 @@
import com.android.launcher3.allapps.FloatingHeaderRow;
import com.android.launcher3.allapps.FloatingHeaderView;
import com.android.launcher3.anim.AlphaUpdateListener;
+import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.keyboard.FocusIndicatorHelper;
import com.android.launcher3.keyboard.FocusIndicatorHelper.SimpleFocusIndicatorHelper;
import com.android.launcher3.model.data.ItemInfo;
@@ -105,12 +106,22 @@
mActivityContext.getAppsView().getAppsStore().unregisterIconContainer(this);
}
}
+
+ // Set the predicted row in All Apps' text line to 1.
+ if (FeatureFlags.ENABLE_TWOLINE_ALLAPPS.get()
+ || FeatureFlags.ENABLE_TWOLINE_DEVICESEARCH.get()) {
+ for (int i = 0; i < getChildCount(); i++) {
+ BubbleTextView icon = (BubbleTextView) getChildAt(i);
+ icon.setMaxLines(1);
+ }
+ }
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(getExpectedHeight(),
MeasureSpec.EXACTLY));
+ updateVisibility();
}
@Override
diff --git a/src/com/android/launcher3/BubbleTextView.java b/src/com/android/launcher3/BubbleTextView.java
index 961c254..450a9f0 100644
--- a/src/com/android/launcher3/BubbleTextView.java
+++ b/src/com/android/launcher3/BubbleTextView.java
@@ -398,6 +398,15 @@
|| mDisplay == DISPLAY_TASKBAR;
}
+ /**
+ * Only if actual text can be displayed in two line, the {@code true} value will be effective.
+ */
+ protected boolean shouldUseTwoLine() {
+ return (FeatureFlags.ENABLE_TWOLINE_ALLAPPS.get() && mDisplay == DISPLAY_ALL_APPS)
+ || (FeatureFlags.ENABLE_TWOLINE_DEVICESEARCH.get()
+ && mDisplay == DISPLAY_SEARCH_RESULT);
+ }
+
@UiThread
@VisibleForTesting
public void applyLabel(ItemInfoWithIcon info) {
@@ -667,10 +676,8 @@
setPadding(getPaddingLeft(), (height - cellHeightPx) / 2, getPaddingRight(),
getPaddingBottom());
}
- // only apply two line for all_apps
- if (((FeatureFlags.ENABLE_TWOLINE_ALLAPPS.get() && mDisplay == DISPLAY_ALL_APPS)
- || (FeatureFlags.ENABLE_TWOLINE_DEVICESEARCH.get()
- && mDisplay == DISPLAY_SEARCH_RESULT)) && (mLastOriginalText != null)) {
+ // Only apply two line for all_apps and device search only if necessary.
+ if (shouldUseTwoLine() && (mLastOriginalText != null)) {
CharSequence modifiedString = modifyTitleToSupportMultiLine(
MeasureSpec.getSize(widthMeasureSpec) - getCompoundPaddingLeft()
- getCompoundPaddingRight(),