即使 editText 具有焦点,Talk Back 也会宣布微调器内容描述

Talk Back annoucing spinner content description even when editText has focus

我有一个布局, 有一个表单.. 表单中大约有五个项目是一个微调器,每次我的 activity 加载时,即使焦点和闪烁的光标位于第一个 edittext 视图上,Talkback 似乎也会读取这个微调器的内容描述。

我似乎无法阻止它..有什么想法吗?

在 Android 中单独跟踪辅助功能焦点和输入焦点。我需要有关您的具体情况的更多详细信息才能提供 100% 的答案。但是,我的猜测是您的 EditText 字段在视图加载时请求输入焦点,因此光标被移动到那里,并且可能会弹出键盘(取决于 Android 版本)。但是,由于选项卡顺序或其他一些机制,微调器是页面上获得辅助功能焦点的第一个项目。

根据您想要的行为,有两种解决方案。

解决方案 1(推荐):没有让您的 EditText 框请求输入焦点。允许用户在交互时强制输入焦点到框中。对于有能力的用户,这只是简单地点击 EditText 框。

解决方案 2(可访问性较低,但可能更可用):将可访问性焦点转移到 onResume 方法(或 onCreate,或您认为最合适的任何地方)中的 EditText。像这样的方法最好:

public void resetFocus() {        
    editTextControl.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
    editTextControl.requestFocus();
}

我建议在 onResume 中调用上述方法,这样每次此特定视图加载输入时,辅助功能焦点都会位于可预测的位置。否则,您会造成其他可访问性问题。

我是这样简单解决的:

/*
This custom Spinner has the purpose of making sure that there are no accessibility events fired after
a selection is made 
*/

public class SilentSpinner<T> extends SimpleSpinner<T> {

   //region constructors
     ...
   //endregion

   //region public methods
   @Override
   public void sendAccessibilityEvent(int eventType) {
       if (eventType != AccessibilityEvent.TYPE_VIEW_SELECTED) {
           super.sendAccessibilityEvent(eventType);
       }
   }
   //endregion
}