Support bottom text in UsageProgressBarPreference
- Add text view under progressbar
Bug: 177617478
Test: atest UsageProgressBarPreferenceTest
Change-Id: I8b6c00752d3a7d0b1281bb84904f32e3df3e0721
diff --git a/packages/SettingsLib/UsageProgressBarPreference/res/layout/preference_usage_progress_bar.xml b/packages/SettingsLib/UsageProgressBarPreference/res/layout/preference_usage_progress_bar.xml
index f45105d..31b3fe5 100644
--- a/packages/SettingsLib/UsageProgressBarPreference/res/layout/preference_usage_progress_bar.xml
+++ b/packages/SettingsLib/UsageProgressBarPreference/res/layout/preference_usage_progress_bar.xml
@@ -70,4 +70,13 @@
android:scaleY="2"
android:layout_marginTop="4dp"
android:max="100"/>
+
+ <TextView
+ android:id="@+id/bottom_summary"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:visibility="gone"
+ android:ellipsize="marquee"
+ android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Body1"
+ android:textSize="14sp"/>
</LinearLayout>
diff --git a/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java b/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java
index 2185950..a2b1de2 100644
--- a/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java
+++ b/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java
@@ -44,6 +44,7 @@
private CharSequence mUsageSummary;
private CharSequence mTotalSummary;
+ private CharSequence mBottomSummary;
private ImageView mCustomImageView;
private int mPercent = -1;
@@ -101,6 +102,15 @@
notifyChanged();
}
+ /** Set bottom summary. */
+ public void setBottomSummary(CharSequence bottomSummary) {
+ if (TextUtils.equals(mBottomSummary, bottomSummary)) {
+ return;
+ }
+ mBottomSummary = bottomSummary;
+ notifyChanged();
+ }
+
/** Set percentage of the progress bar. */
public void setPercent(long usage, long total) {
if (total == 0L || usage > total) {
@@ -147,6 +157,14 @@
totalSummary.setText(mTotalSummary);
}
+ final TextView bottomSummary = (TextView) holder.findViewById(R.id.bottom_summary);
+ if (TextUtils.isEmpty(mBottomSummary)) {
+ bottomSummary.setVisibility(View.GONE);
+ } else {
+ bottomSummary.setVisibility(View.VISIBLE);
+ bottomSummary.setText(mBottomSummary);
+ }
+
final ProgressBar progressBar = (ProgressBar) holder.findViewById(android.R.id.progress);
if (mPercent < 0) {
progressBar.setIndeterminate(true);
diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/widget/UsageProgressBarPreferenceTest.java b/packages/SettingsLib/tests/integ/src/com/android/settingslib/widget/UsageProgressBarPreferenceTest.java
index fe76b06..cd78add 100644
--- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/widget/UsageProgressBarPreferenceTest.java
+++ b/packages/SettingsLib/tests/integ/src/com/android/settingslib/widget/UsageProgressBarPreferenceTest.java
@@ -92,6 +92,28 @@
}
@Test
+ public void setBottomSummary_getCorrectSummary() {
+ final String expectedText = "Should last until about 7:45 PM";
+ mUsageProgressBarPreference.setBottomSummary(expectedText);
+
+ mUsageProgressBarPreference.onBindViewHolder(mViewHolder);
+
+ final TextView bottomSummary = (TextView) mViewHolder.findViewById(R.id.bottom_summary);
+ assertThat(bottomSummary.getText()).isEqualTo(expectedText);
+ assertThat(bottomSummary.getVisibility()).isEqualTo(View.VISIBLE);
+ }
+
+ @Test
+ public void setBottomSummary_emptyText_isGone() {
+ mUsageProgressBarPreference.setBottomSummary(null);
+
+ mUsageProgressBarPreference.onBindViewHolder(mViewHolder);
+
+ final TextView bottomSummary = (TextView) mViewHolder.findViewById(R.id.bottom_summary);
+ assertThat(bottomSummary.getVisibility()).isEqualTo(View.GONE);
+ }
+
+ @Test
public void setPercent_getCorrectProgress() {
mUsageProgressBarPreference.setPercent(31, 80);