我们对可访问性有一个要求,当给定的活动打开并且用户启用了TalkBack可访问性时,客户端希望Talk Back不仅可以读取活动名称,还可以阅读welcomeText
TextView的文本。该文本视图是动态的,因为它会说"欢迎,"
我尝试在onCreate()活动中这样做:
welcomeText =(TextView)getView().findViewById(R.id.authenticatedNoWishlistWelcomeText);
welcomeText.setFocusableInTouchMode(true);
welcomeText.requestFocus();
但是这不起作用..任何人都可以告诉我如何在没有用户交互的情况下启动Talk Back以阅读给定的TextView吗?
答案 0 :(得分:3)
这里要认识到的重要一点是Focus
和Accessibility Focus
不是同一回事。
您正在寻找以下内容:
welcomeText.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
当你这样做时要小心。在onCreate中执行此操作可能是一个坏主意,因为它只会在加载应用程序活动时发生。你可能想要的是它每次恢复时都会发生。此外,AT(TalkBack)在此生命周期的某个时刻创建了与Activity的连接,因此您希望确保您没有竞争条件。在您发布辅助功能事件之前,TalkBack必须连接到您的活动。
虽然注意,这可能是一个不好的要求。 WCag 3.2.1和3.2.3明确指出导航应该是一致的和可预测的,其中一部分是避免意外的焦点转移。这可能被视为违反了这些指导原则,实际上不易这样做。