From b757a6e9f21047fe828d569fe988592a464d27fe Mon Sep 17 00:00:00 2001 From: Stanley Wang Date: Thu, 1 Jul 2021 22:47:55 +0800 Subject: [PATCH] Fix the problem that when the MainSwitchPreference is gone, there will be a blank area. - Disable the visibility of preference when the the hide() method is invoked. Fix: 192332931 Test: robotest and see the UI Change-Id: Iec5a06ca689843ebb692b1b7040f1d2be9f45bc2 --- .../settings/widget/SettingsMainSwitchPreference.java | 8 +++----- .../settings/widget/SettingsMainSwitchPreferenceTest.java | 2 ++ 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/com/android/settings/widget/SettingsMainSwitchPreference.java b/src/com/android/settings/widget/SettingsMainSwitchPreference.java index f0e8d95b899..f1eb603a719 100644 --- a/src/com/android/settings/widget/SettingsMainSwitchPreference.java +++ b/src/com/android/settings/widget/SettingsMainSwitchPreference.java @@ -50,7 +50,6 @@ public class SettingsMainSwitchPreference extends TwoStatePreference implements private SettingsMainSwitchBar mMainSwitchBar; private CharSequence mTitle; - private boolean mIsVisible; private EnforcedAdmin mEnforcedAdmin; private RestrictedPreferenceHelper mRestrictedHelper; @@ -87,7 +86,7 @@ public class SettingsMainSwitchPreference extends TwoStatePreference implements } mMainSwitchBar = (SettingsMainSwitchBar) holder.findViewById(R.id.main_switch_bar); initMainSwitchBar(); - if (mIsVisible) { + if (isVisible()) { mMainSwitchBar.show(); if (mMainSwitchBar.isChecked() != isChecked()) { setChecked(isChecked()); @@ -101,7 +100,6 @@ public class SettingsMainSwitchPreference extends TwoStatePreference implements private void init(Context context, AttributeSet attrs) { setLayoutResource(R.layout.preference_widget_main_switch); mSwitchChangeListeners.add(this); - mIsVisible = true; if (attrs != null) { final TypedArray a = context.obtainStyledAttributes(attrs, @@ -151,7 +149,7 @@ public class SettingsMainSwitchPreference extends TwoStatePreference implements * Show the MainSwitchBar */ public void show() { - mIsVisible = true; + setVisible(true); if (mMainSwitchBar != null) { mMainSwitchBar.show(); } @@ -161,7 +159,7 @@ public class SettingsMainSwitchPreference extends TwoStatePreference implements * Hide the MainSwitchBar */ public void hide() { - mIsVisible = false; + setVisible(false); if (mMainSwitchBar != null) { mMainSwitchBar.hide(); } diff --git a/tests/robotests/src/com/android/settings/widget/SettingsMainSwitchPreferenceTest.java b/tests/robotests/src/com/android/settings/widget/SettingsMainSwitchPreferenceTest.java index 31d10d925ad..c079029ffe0 100644 --- a/tests/robotests/src/com/android/settings/widget/SettingsMainSwitchPreferenceTest.java +++ b/tests/robotests/src/com/android/settings/widget/SettingsMainSwitchPreferenceTest.java @@ -76,6 +76,7 @@ public class SettingsMainSwitchPreferenceTest { mPreference.onBindViewHolder(mHolder); assertThat(mPreference.isShowing()).isTrue(); + assertThat(mPreference.isVisible()).isTrue(); } @Test @@ -85,5 +86,6 @@ public class SettingsMainSwitchPreferenceTest { mPreference.onBindViewHolder(mHolder); assertThat(mPreference.isShowing()).isFalse(); + assertThat(mPreference.isVisible()).isFalse(); } }