diff options
author | 2025-02-28 16:05:52 +0800 | |
---|---|---|
committer | 2025-03-05 21:34:32 -0800 | |
commit | acb38db8ff76f162a2c3806bee9a018ea2f946a5 (patch) | |
tree | f27aa325065a81a00c7cdd3863bfbee0898fc6bd | |
parent | 5adfd4a538e3897ebe2087de80513060ec479f4b (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.java | 14 |
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. |