我正在使用google开发一个应用程序,它应该被那些看不见的人使用,所以访问性是很重要的。
我如何使一个已经作为文本的TextView和一个contentDescription在活动一开始就被宣布,而不用用户去触摸它呢?
我问题的另一点是,我有一条巴士路线,我想要在某些地方得到一个描述,而我的问题是,反馈正常工作,但是如果我触摸googlemap或其他活动中的任何地方,对讲机就不再说这种描述了。(这个描述出现在烤面包中)
发布于 2017-11-10 15:18:46
当你的活动一开始,你在第一点中概述的关于阅读文本的内容是不可取的行为。让TalkBack用户浏览您的应用程序,以找到这些信息。如果您必须发布公告,您要查找的是可访问性公告事件,它允许您向辅助技术层发送任意文本公告。
if (AccessibilityManager.getInstance(context).isEnabled()) {
AccessibilityEvent event = AccessibilityEvent.obtain(
AccessibilityEvent.TYPE_ANNOUNCEMENT);
onInitializeAccessibilityEvent(event);
event.getText().add("some text");
event.setContentDescription(null);
yourContentView.requestSendAccessibilityEvent(this, event);
}您在第二点中概述的是所期望的行为。想象一下,如果一个TalkBack用户不能中断各种通知,如果他们不小心连续地将几段文字集中在一起,他们需要等待多长时间才能听到按钮之类的简单名称?这将是一个非常令人沮丧的用户体验。
发布于 2020-07-15 18:21:44
与上面相同的答案,最新的代码更新:
private void sendAccessibiltyEvent(@NonNull String message) {
AccessibilityManager accessibilityManager = (AccessibilityManager)requireActivity().getApplicationContext().getSystemService(Context.ACCESSIBILITY_SERVICE);
if (accessibilityManager.isEnabled()) {
AccessibilityEvent event = AccessibilityEvent.obtain(AccessibilityEvent.TYPE_ANNOUNCEMENT);
event.getText().add(message);
accessibilityManager.sendAccessibilityEvent(event);
}
}https://stackoverflow.com/questions/47178566
复制相似问题