我们对辅助功能有一个要求,当给定的activity打开时,用户打开了TalkBack accessibility,客户端希望对话不仅要读取活动名称,还要读取我们的welcomeText TextView的文本。该文本视图是动态的,因为它将显示"Welcome“,
我尝试在活动onCreate()中执行此操作,方法是:
welcomeText =(TextView)getView().findViewById(R.id.authenticatedNoWishlistWelcomeText);
welcomeText.setFocusableInTouchMode(true);
welcomeText.requestFocus();但这是行不通的。谁能告诉我,在没有用户交互的情况下,如何在启动时让Talk Back阅读给定的TextView?
发布于 2015-07-24 01:32:36
这里要认识到的重要一点是,Focus和Accessibility Focus不是一回事。
您正在寻找以下内容:
welcomeText.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);当你这样做的时候要小心。在onCreate中这样做可能不是一个好主意,因为只有在加载应用程序活动时才会发生这种情况。您可能希望它在每次恢复时都会发生。此外,AT (TalkBack)会在此生命周期的某个时刻创建与活动的连接,因此您需要确保不存在竞争条件。在您发布辅助功能事件之前,TalkBack必须连接到您的活动。
但请注意,这可能是一个糟糕的要求。WCag 3.2.1和3.2.3明确指出,导航应该是一致的和可预测的,部分原因是避免了意外的焦点转移。这可能会被认为违反了这些指导方针,实际上比不这样做更难获得。
https://stackoverflow.com/questions/31569490
复制相似问题