我们对可访问性有一个要求,即当一个给定的活动打开并且用户打开了对讲可访问性时,客户端希望对讲不仅读取活动名称,还读取我们的welcomeText
文本视图的文本。文本视图是动态的,因为它会说“欢迎”,
我在oncreate()活动中试着这样做,说:
welcomeText =(TextView)getView().findViewById(R.id.authenticatedNoWishlistWelcomeText);
welcomeText.setFocusableInTouchMode(true);
welcomeText.requestFocus();
但这不管用…有谁能告诉我,在没有用户交互的情况下,如何在启动时让talk返回来读取给定的textview?
最佳答案
这里要认识到的重要一点是Focus
和Accessibility Focus
不是一回事。
您正在查找以下内容:
welcomeText.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
做这件事时要小心。在oncreate中这样做可能是个坏主意,因为只有在加载应用程序活动时才会发生这种情况。您可能希望每次恢复时都发生这种情况。此外,a t(talkback)在生命周期的某个时刻创建了与活动的连接,因此您希望确保没有种族状况。在发布可访问性事件之前,反馈必须连接到您的活动。
但请注意,这可能是一个不好的要求。wcag 3.2.1和3.2.3明确指出导航应该是一致的和可预测的,部分原因是避免了焦点的意外转移。这可能被视为违反了这些准则,而且实际上比不这样做更不容易获得。