CallStyle: Also handle null label to glue
Bug: 329288442
Flag: ACONFIG com.android.systemui.new_call_style_action_layout NEXTFOOD
Test: none
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:614da108d8e4259ad925a437830408e83b6c3979)
Merged-In: Ib8958198aa7e99b0db54834602ecf4767146c560
Change-Id: Ib8958198aa7e99b0db54834602ecf4767146c560
diff --git a/core/java/com/android/internal/widget/EmphasizedNotificationButton.java b/core/java/com/android/internal/widget/EmphasizedNotificationButton.java
index c07e624..56b93b3 100644
--- a/core/java/com/android/internal/widget/EmphasizedNotificationButton.java
+++ b/core/java/com/android/internal/widget/EmphasizedNotificationButton.java
@@ -249,14 +249,6 @@
return;
}
- if (mIconToGlue == null && mLabelToGlue == null) {
- if (DEBUG_NEW_ACTION_LAYOUT) {
- Log.v(TAG, "glueIconAndLabelIfNeeded: no icon or label to glue; doing nothing");
- }
- mGluePending = false;
- return;
- }
-
if (!evenlyDividedCallStyleActionLayout()) {
Log.e(TAG, "glueIconAndLabelIfNeeded: new action layout disabled; doing nothing");
return;
@@ -272,17 +264,6 @@
return;
}
- // Ready to glue but don't have an icon *and* a label:
- //
- // (Note that this will *not* happen while the button is being initialized, since we won't
- // be ready to glue. This can only happen if the button is initialized and displayed and
- // *then* someone calls glueIcon or glueLabel.
-
- if (mLabelToGlue == null) {
- Log.w(TAG, "glueIconAndLabelIfNeeded: icon glued without label; doing nothing");
- return;
- }
-
// Can't glue:
final int layoutDirection = getLayoutDirection();
@@ -313,12 +294,26 @@
private static final String POP_DIRECTIONAL_ISOLATE = "\u2069";
private void glueIconAndLabel(int layoutDirection) {
- if (mIconToGlue == null) {
+ if (mIconToGlue == null && mLabelToGlue == null) {
+ if (DEBUG_NEW_ACTION_LAYOUT) {
+ Log.d(TAG, "glueIconAndLabel: null icon and label, setting text to empty string");
+ }
+ setText("");
+ return;
+ } else if (mIconToGlue == null) {
if (DEBUG_NEW_ACTION_LAYOUT) {
Log.d(TAG, "glueIconAndLabel: null icon, setting text to label");
}
setText(mLabelToGlue);
return;
+ } else if (mLabelToGlue == null) {
+ if (DEBUG_NEW_ACTION_LAYOUT) {
+ Log.d(TAG, "glueIconAndLabel: null label, setting text to ImageSpan with icon");
+ }
+ final SpannableStringBuilder builder = new SpannableStringBuilder();
+ appendSpan(builder, IMAGE_SPAN_TEXT, new ImageSpan(mIconToGlue, ALIGN_CENTER));
+ setText(builder);
+ return;
}
final boolean rtlLayout = layoutDirection == LAYOUT_DIRECTION_RTL;