From 2b0d9cfc5d61d82624b6c9d773eaf8f8fdc7878b Mon Sep 17 00:00:00 2001 From: Edgar Wang Date: Thu, 19 May 2022 09:20:30 +0800 Subject: [PATCH] Fix talkback speak "double tap to activate" on LabeledSeekBarPreference - SeekBarPreference should be unselectable - remove unnecessary handling of Summary - set currect Title color when preference is enabled and unselectable Bug: 230553896 Test: robotest Change-Id: Ie5d819088dc3c435005ddd00e232b2f6992b234a --- .../accessibility_text_reading_options.xml | 2 - res/xml/gesture_navigation_settings.xml | 2 - res/xml/power_menu_settings.xml | 1 - .../widget/LabeledSeekBarPreference.java | 45 +++++-------------- .../settings/widget/SeekBarPreference.java | 12 +---- 5 files changed, 13 insertions(+), 49 deletions(-) diff --git a/res/xml/accessibility_text_reading_options.xml b/res/xml/accessibility_text_reading_options.xml index 7fd5ff9a581..513920b978e 100644 --- a/res/xml/accessibility_text_reading_options.xml +++ b/res/xml/accessibility_text_reading_options.xml @@ -27,7 +27,6 @@ @@ -54,7 +53,6 @@ android:key="gesture_right_back_sensitivity" android:title="@string/right_edge" android:max="2" - android:selectable="true" settings:textStart="@string/low_label" settings:textEnd="@string/high_label"/> diff --git a/res/xml/power_menu_settings.xml b/res/xml/power_menu_settings.xml index 864cf1b09eb..e5e2daa7492 100644 --- a/res/xml/power_menu_settings.xml +++ b/res/xml/power_menu_settings.xml @@ -36,7 +36,6 @@ android:key="gesture_power_menu_long_press_for_assist_sensitivity" android:title="@string/power_menu_long_press_for_assist_sensitivity_title" android:summary="@string/power_menu_long_press_for_assist_sensitivity_summary" - android:selectable="true" settings:textStart="@string/power_menu_long_press_for_assist_sensitivity_low_label" settings:textEnd="@string/power_menu_long_press_for_assist_sensitivity_high_label" settings:controller="com.android.settings.gestures.LongPressPowerSensitivityPreferenceController" diff --git a/src/com/android/settings/widget/LabeledSeekBarPreference.java b/src/com/android/settings/widget/LabeledSeekBarPreference.java index 3e095239d18..5d1011634c7 100644 --- a/src/com/android/settings/widget/LabeledSeekBarPreference.java +++ b/src/com/android/settings/widget/LabeledSeekBarPreference.java @@ -26,12 +26,12 @@ import android.widget.ImageView; import android.widget.SeekBar; import android.widget.TextView; -import androidx.annotation.Nullable; import androidx.core.content.res.TypedArrayUtils; import androidx.preference.PreferenceViewHolder; import com.android.internal.util.Preconditions; import com.android.settings.R; +import com.android.settings.Utils; /** * A labeled {@link SeekBarPreference} with left and right text label, icon label, or both. @@ -61,8 +61,6 @@ public class LabeledSeekBarPreference extends SeekBarPreference { private final int mIconStartContentDescriptionId; private final int mIconEndContentDescriptionId; private OnPreferenceChangeListener mStopListener; - @Nullable - private CharSequence mSummary; private SeekBar.OnSeekBarChangeListener mSeekBarChangeListener; public LabeledSeekBarPreference(Context context, AttributeSet attrs, int defStyleAttr, @@ -97,8 +95,6 @@ public class LabeledSeekBarPreference extends SeekBarPreference { Preconditions.checkArgument(!(mIconEndContentDescriptionId != 0 && mIconEndId == 0), "The resource of the iconEnd attribute may be invalid or not set, " + "you should set the iconEnd attribute and have the valid resource."); - - mSummary = styledAttrs.getText(R.styleable.Preference_android_summary); styledAttrs.recycle(); } @@ -112,6 +108,17 @@ public class LabeledSeekBarPreference extends SeekBarPreference { public void onBindViewHolder(PreferenceViewHolder holder) { super.onBindViewHolder(holder); + final TextView summaryView = (TextView) holder.findViewById(android.R.id.summary); + boolean isSummaryVisible = false; + if (summaryView != null) { + isSummaryVisible = (summaryView.getVisibility() == View.VISIBLE); + } + final TextView titleView = (TextView) holder.findViewById(android.R.id.title); + if (titleView != null && !isSelectable() && isEnabled() && isSummaryVisible) { + titleView.setTextColor( + Utils.getColorAttr(getContext(), android.R.attr.textColorPrimary)); + } + final TextView startText = (TextView) holder.findViewById(android.R.id.text1); if (mTextStartId > 0) { startText.setText(mTextStartId); @@ -132,15 +139,6 @@ public class LabeledSeekBarPreference extends SeekBarPreference { seekBar.setTickMark(tickMark); } - final TextView summary = (TextView) holder.findViewById(android.R.id.summary); - if (mSummary != null) { - summary.setText(mSummary); - summary.setVisibility(View.VISIBLE); - } else { - summary.setText(null); - summary.setVisibility(View.GONE); - } - final ViewGroup iconStartFrame = (ViewGroup) holder.findViewById(R.id.icon_start_frame); final ImageView iconStartView = (ImageView) holder.findViewById(R.id.icon_start); updateIconStartIfNeeded(iconStartFrame, iconStartView, seekBar); @@ -188,25 +186,6 @@ public class LabeledSeekBarPreference extends SeekBarPreference { notifyChanged(); } - @Override - public void setSummary(CharSequence summary) { - super.setSummary(summary); - mSummary = summary; - notifyChanged(); - } - - @Override - public void setSummary(int summaryResId) { - super.setSummary(summaryResId); - mSummary = getContext().getText(summaryResId); - notifyChanged(); - } - - @Override - public CharSequence getSummary() { - return mSummary; - } - public void setOnSeekBarChangeListener(SeekBar.OnSeekBarChangeListener seekBarChangeListener) { mSeekBarChangeListener = seekBarChangeListener; } diff --git a/src/com/android/settings/widget/SeekBarPreference.java b/src/com/android/settings/widget/SeekBarPreference.java index 62a19b945e9..b262627a489 100644 --- a/src/com/android/settings/widget/SeekBarPreference.java +++ b/src/com/android/settings/widget/SeekBarPreference.java @@ -78,12 +78,7 @@ public class SeekBarPreference extends RestrictedPreference com.android.internal.R.layout.preference_widget_seekbar); a.recycle(); - a = context.obtainStyledAttributes( - attrs, com.android.internal.R.styleable.Preference, defStyleAttr, defStyleRes); - final boolean isSelectable = a.getBoolean( - com.android.settings.R.styleable.Preference_android_selectable, false); - setSelectable(isSelectable); - a.recycle(); + setSelectable(false); setLayoutResource(layoutResId); } @@ -170,11 +165,6 @@ public class SeekBarPreference extends RestrictedPreference }); } - @Override - public CharSequence getSummary() { - return null; - } - @Override protected void onSetInitialValue(boolean restoreValue, Object defaultValue) { setProgress(restoreValue ? getPersistedInt(mProgress)