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
diff --git a/res/xml/accessibility_text_reading_options.xml b/res/xml/accessibility_text_reading_options.xml
index 7fd5ff9..513920b 100644
--- a/res/xml/accessibility_text_reading_options.xml
+++ b/res/xml/accessibility_text_reading_options.xml
@@ -27,7 +27,6 @@
<com.android.settings.widget.LabeledSeekBarPreference
android:key="font_size"
- android:selectable="true"
android:summary="@string/short_summary_font_size"
android:title="@string/title_font_size"
settings:iconEnd="@drawable/ic_add_24dp"
@@ -38,7 +37,6 @@
<com.android.settings.widget.LabeledSeekBarPreference
android:key="display_size"
- android:selectable="true"
android:summary="@string/screen_zoom_short_summary"
android:title="@string/screen_zoom_title"
settings:iconEnd="@drawable/ic_add_24dp"
diff --git a/res/xml/gesture_navigation_settings.xml b/res/xml/gesture_navigation_settings.xml
index 09bb870..022583c 100644
--- a/res/xml/gesture_navigation_settings.xml
+++ b/res/xml/gesture_navigation_settings.xml
@@ -46,7 +46,6 @@
android:key="gesture_left_back_sensitivity"
android:title="@string/left_edge"
android:max="2"
- android:selectable="true"
settings:textStart="@string/low_label"
settings:textEnd="@string/high_label"/>
@@ -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"/>
</PreferenceCategory>
diff --git a/res/xml/power_menu_settings.xml b/res/xml/power_menu_settings.xml
index 864cf1b..e5e2daa 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 3e09523..5d10116 100644
--- a/src/com/android/settings/widget/LabeledSeekBarPreference.java
+++ b/src/com/android/settings/widget/LabeledSeekBarPreference.java
@@ -26,12 +26,12 @@
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 @@
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 @@
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 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 @@
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 @@
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 62a19b9..b262627 100644
--- a/src/com/android/settings/widget/SeekBarPreference.java
+++ b/src/com/android/settings/widget/SeekBarPreference.java
@@ -78,12 +78,7 @@
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);
}
@@ -171,11 +166,6 @@
}
@Override
- public CharSequence getSummary() {
- return null;
- }
-
- @Override
protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {
setProgress(restoreValue ? getPersistedInt(mProgress)
: (Integer) defaultValue);