summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Wesley.CW Wang <wesleycwwang@google.com> 2021-03-08 15:27:43 +0800
committer Wesley Wang <wesleycwwang@google.com> 2021-03-08 08:54:03 +0000
commit0ca9728f35e7b2f2024c4a450e155ed63ddfbd70 (patch)
tree345dda342ec679ecf8d00bbba36fa62a3fcad5a3
parentb6d634df79c2cc977cc2cc2a1070aa995b207709 (diff)
Clear UsageProgressBarPreference image view before setting images
The legacy image view will be kept when setting different image view to UsageProgressBarPreference, this will cause UsageProgressBarPreference display duplicate views after setting many times, add removeAllViews() before addView() to fix it. Bug: 174964885 Test: atest UsageProgressBarPreferenceTest Change-Id: Id6b89dccb07a88f2f1be78a19c1de3ac3835087b
-rw-r--r--packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java1
-rw-r--r--packages/SettingsLib/tests/integ/src/com/android/settingslib/widget/UsageProgressBarPreferenceTest.java16
2 files changed, 17 insertions, 0 deletions
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 af64a1dc2282..21859501c057 100644
--- a/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java
+++ b/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java
@@ -160,6 +160,7 @@ public class UsageProgressBarPreference extends Preference {
customLayout.removeAllViews();
customLayout.setVisibility(View.GONE);
} else {
+ customLayout.removeAllViews();
customLayout.addView(mCustomImageView);
customLayout.setVisibility(View.VISIBLE);
}
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 1a8477d9b86e..fe76b06a9b61 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
@@ -127,4 +127,20 @@ public class UsageProgressBarPreferenceTest {
assertThat(customContent.getChildAt(0)).isEqualTo(imageView);
assertThat(customContent.getVisibility()).isEqualTo(View.VISIBLE);
}
+
+ @Test
+ public void setCustomContent_setImageViewTwice_oneAndLatestChild() {
+ final ImageView imageViewLegacy = mock(ImageView.class);
+ final ImageView imageViewNew = mock(ImageView.class);
+ mUsageProgressBarPreference.setCustomContent(imageViewLegacy);
+ mUsageProgressBarPreference.setCustomContent(imageViewNew);
+
+ mUsageProgressBarPreference.onBindViewHolder(mViewHolder);
+
+ final FrameLayout customContent =
+ (FrameLayout) mViewHolder.findViewById(R.id.custom_content);
+ assertThat(customContent.getChildCount()).isEqualTo(1);
+ assertThat(customContent.getChildAt(0)).isEqualTo(imageViewNew);
+ assertThat(customContent.getVisibility()).isEqualTo(View.VISIBLE);
+ }
}