Ensure if text is loading the textview is still taking space
Test: manual - loadlist, loadgrid and fyft app
Bug: 74212891
Change-Id: Iad9aa986073549253d7e52f27da16ed993cbcdf8
diff --git a/samples/SupportSliceDemos/src/main/java/com/example/androidx/slice/demos/SampleSliceProvider.java b/samples/SupportSliceDemos/src/main/java/com/example/androidx/slice/demos/SampleSliceProvider.java
index a9008cb..f472edf 100644
--- a/samples/SupportSliceDemos/src/main/java/com/example/androidx/slice/demos/SampleSliceProvider.java
+++ b/samples/SupportSliceDemos/src/main/java/com/example/androidx/slice/demos/SampleSliceProvider.java
@@ -33,6 +33,7 @@
import android.os.Handler;
import android.provider.Settings;
import android.text.SpannableString;
+import android.text.TextUtils;
import android.text.format.DateUtils;
import android.text.style.ForegroundColorSpan;
import android.util.SparseArray;
@@ -580,27 +581,34 @@
update(1500, mListSummaries, 1, "12 miles | 12 min | $9.00", sliceUri, r);
update(1700, mListSummaries, 2, "5 miles | 10 min | $8.00", sliceUri, r);
}
- Slice s = new ListBuilder(getContext(), sliceUri, -TimeUnit.MINUTES.toMillis(5))
+ CharSequence work = mListSummaries.get(0, "");
+ CharSequence home = mListSummaries.get(1, "");
+ CharSequence school = mListSummaries.get(2, "");
+ Slice s = new ListBuilder(getContext(), sliceUri, -TimeUnit.MINUTES.toMillis(50))
.addRow(b -> b
.setTitle("Work")
- .setSubtitle(mListSummaries.get(0, ""), updating)
+ .setSubtitle(work,
+ updating || TextUtils.isEmpty(work))
.addEndItem(Icon.createWithResource(getContext(), R.drawable.ic_work),
ICON_IMAGE))
.addRow(b -> b
.setTitle("Home")
- .setSubtitle(mListSummaries.get(1, ""), updating)
+ .setSubtitle(mListSummaries.get(1, ""),
+ updating || TextUtils.isEmpty(home))
.addEndItem(
Icon.createWithResource(getContext(), R.drawable.ic_home),
ICON_IMAGE))
.addRow(b -> b
.setTitle("School")
- .setSubtitle(mListSummaries.get(2, ""), updating)
+ .setSubtitle(mListSummaries.get(2, ""),
+ updating || TextUtils.isEmpty(school))
.addEndItem(Icon.createWithResource(getContext(), R.drawable.ic_school),
ICON_IMAGE))
.build();
return s;
}
+ // TODO: Should test large image grids
private Slice createLoadingGridSlice(Uri sliceUri) {
boolean updating = mGridLastUpdate == 0
|| mGridLastUpdate < (System.currentTimeMillis() - 10 * System.currentTimeMillis());
@@ -613,26 +621,36 @@
update(1500, mGridSummaries, 3, "33 min", sliceUri, r);
update(1000, mGridSummaries, 4, "12 min", sliceUri, r);
}
+ CharSequence title = mGridSummaries.get(0, "");
+ CharSequence subtitle = mGridSummaries.get(1, "");
+ CharSequence home = mGridSummaries.get(2, "");
+ CharSequence work = mGridSummaries.get(3, "");
+ CharSequence school = mGridSummaries.get(4, "");
Slice s = new ListBuilder(getContext(), sliceUri, INFINITY)
.setHeader(hb -> hb
- .setTitle(mGridSummaries.get(0, ""), updating)
- .setSubtitle(mGridSummaries.get(1, ""), updating))
+ .setTitle(title,
+ updating || TextUtils.isEmpty(title))
+ .setSubtitle(subtitle,
+ updating || TextUtils.isEmpty(subtitle)))
.addGrid(gb -> gb
.addCell(cb -> cb
.addImage(Icon.createWithResource(getContext(), R.drawable.ic_home),
ICON_IMAGE)
.addTitleText("Home")
- .addText(mGridSummaries.get(2, ""), updating))
+ .addText(home,
+ updating || TextUtils.isEmpty(home)))
.addCell(cb -> cb
.addImage(Icon.createWithResource(getContext(), R.drawable.ic_work),
ICON_IMAGE)
.addTitleText("Work")
- .addText(mGridSummaries.get(3, ""), updating))
+ .addText(work,
+ updating || TextUtils.isEmpty(work)))
.addCell(cb -> cb
.addImage(Icon.createWithResource(getContext(), R.drawable.ic_school),
ICON_IMAGE)
.addTitleText("School")
- .addText(mGridSummaries.get(4, ""), updating)))
+ .addText(school,
+ updating || TextUtils.isEmpty(school))))
.build();
return s;
}
diff --git a/slices/view/src/main/java/androidx/slice/widget/RowContent.java b/slices/view/src/main/java/androidx/slice/widget/RowContent.java
index 8f30f53..7565895 100644
--- a/slices/view/src/main/java/androidx/slice/widget/RowContent.java
+++ b/slices/view/src/main/java/androidx/slice/widget/RowContent.java
@@ -17,6 +17,7 @@
package androidx.slice.widget;
import static android.app.slice.Slice.HINT_ACTIONS;
+import static android.app.slice.Slice.HINT_PARTIAL;
import static android.app.slice.Slice.HINT_SEE_MORE;
import static android.app.slice.Slice.HINT_SHORTCUT;
import static android.app.slice.Slice.HINT_SUMMARY;
@@ -273,7 +274,9 @@
}
private static boolean hasText(SliceItem textSlice) {
- return textSlice != null && !TextUtils.isEmpty(textSlice.getText());
+ return textSlice != null
+ && (textSlice.hasHint(HINT_PARTIAL)
+ || !TextUtils.isEmpty(textSlice.getText()));
}
/**
diff --git a/slices/view/src/main/java/androidx/slice/widget/RowView.java b/slices/view/src/main/java/androidx/slice/widget/RowView.java
index b5f55a7..71d7fb0 100644
--- a/slices/view/src/main/java/androidx/slice/widget/RowView.java
+++ b/slices/view/src/main/java/androidx/slice/widget/RowView.java
@@ -18,6 +18,7 @@
import static android.app.slice.Slice.EXTRA_TOGGLE_STATE;
import static android.app.slice.Slice.HINT_NO_TINT;
+import static android.app.slice.Slice.HINT_PARTIAL;
import static android.app.slice.Slice.HINT_SHORTCUT;
import static android.app.slice.Slice.SUBTYPE_TOGGLE;
import static android.app.slice.SliceItem.FORMAT_ACTION;
@@ -318,7 +319,9 @@
SliceViewUtil.getRelativeTimeString(mLastUpdated));
}
CharSequence subtitle = subtitleItem != null ? subtitleItem.getText() : null;
- if (!TextUtils.isEmpty(subtitle)) {
+ boolean subtitleExists = !TextUtils.isEmpty(subtitle)
+ || (subtitleItem != null && subtitleItem.hasHint(HINT_PARTIAL));
+ if (subtitleExists) {
mSecondaryText.setText(subtitle);
mSecondaryText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mIsHeader
? mHeaderSubtitleSize
@@ -337,7 +340,7 @@
mLastUpdatedText.setTextColor(mSubtitleColor);
}
mLastUpdatedText.setVisibility(TextUtils.isEmpty(subtitleTimeString) ? GONE : VISIBLE);
- mSecondaryText.setVisibility(TextUtils.isEmpty(subtitle) ? GONE : VISIBLE);
+ mSecondaryText.setVisibility(subtitleExists ? VISIBLE : GONE);
}
private void addRange(final SliceItem range) {