summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author mxyyiyi <mxyyiyi@google.com> 2025-02-28 16:05:52 +0800
committer Xinyi Mao <mxyyiyi@google.com> 2025-03-05 21:34:32 -0800
commitacb38db8ff76f162a2c3806bee9a018ea2f946a5 (patch)
treef27aa325065a81a00c7cdd3863bfbee0898fc6bd
parent5adfd4a538e3897ebe2087de80513060ec479f4b (diff)
[A11y] Ignore the INTERRUPT event in spinner.
- Fix the incorrect talkback info which that in each time screen updated, Spinner will send a interrupt event TYPE_VIEW_SELECTED to let talkback speak for it. Fix: 401123984 Test: talkback Flag: EXEMPT for simple fix Change-Id: I1d7146b77e3a7c93ab1ba7bba7d989bc73f55e37
-rw-r--r--packages/SettingsLib/SettingsSpinner/src/com/android/settingslib/widget/SettingsSpinnerPreference.java14
1 files changed, 13 insertions, 1 deletions
diff --git a/packages/SettingsLib/SettingsSpinner/src/com/android/settingslib/widget/SettingsSpinnerPreference.java b/packages/SettingsLib/SettingsSpinner/src/com/android/settingslib/widget/SettingsSpinnerPreference.java
index 0f6a2a082e0c..1170f1e7c695 100644
--- a/packages/SettingsLib/SettingsSpinner/src/com/android/settingslib/widget/SettingsSpinnerPreference.java
+++ b/packages/SettingsLib/SettingsSpinner/src/com/android/settingslib/widget/SettingsSpinnerPreference.java
@@ -19,6 +19,7 @@ package com.android.settingslib.widget;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
+import android.view.accessibility.AccessibilityEvent;
import android.widget.AdapterView;
import android.widget.Spinner;
@@ -110,7 +111,6 @@ public class SettingsSpinnerPreference extends Preference
notifyChanged();
}
-
@Override
public void onBindViewHolder(PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
@@ -119,6 +119,18 @@ public class SettingsSpinnerPreference extends Preference
spinner.setSelection(mPosition);
spinner.setOnItemSelectedListener(mOnSelectedListener);
spinner.setLongClickable(false);
+ spinner.setAccessibilityDelegate(
+ new View.AccessibilityDelegate() {
+ @Override
+ public void sendAccessibilityEvent(View host, int eventType) {
+ if (eventType == AccessibilityEvent.TYPE_VIEW_SELECTED) {
+ // Ignore the INTERRUPT events TYPE_VIEW_SELECTED or Talkback will speak
+ // for it while fragment updating.
+ return;
+ }
+ super.sendAccessibilityEvent(host, eventType);
+ }
+ });
if (mShouldPerformClick) {
mShouldPerformClick = false;
// To show dropdown view.