首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发布带有Talkback的TextView

发布带有Talkback的TextView
EN

Stack Overflow用户
提问于 2017-11-08 11:28:36
回答 2查看 2.3K关注 0票数 1

我正在使用google开发一个应用程序,它应该被那些看不见的人使用,所以访问性是很重要的。

我如何使一个已经作为文本的TextView和一个contentDescription在活动一开始就被宣布,而不用用户去触摸它呢?

我问题的另一点是,我有一条巴士路线,我想要在某些地方得到一个描述,而我的问题是,反馈正常工作,但是如果我触摸googlemap或其他活动中的任何地方,对讲机就不再说这种描述了。(这个描述出现在烤面包中)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-10 15:18:46

当你的活动一开始,你在第一点中概述的关于阅读文本的内容是不可取的行为。让TalkBack用户浏览您的应用程序,以找到这些信息。如果您必须发布公告,您要查找的是可访问性公告事件,它允许您向辅助技术层发送任意文本公告。

代码语言:javascript
复制
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用户不能中断各种通知,如果他们不小心连续地将几段文字集中在一起,他们需要等待多长时间才能听到按钮之类的简单名称?这将是一个非常令人沮丧的用户体验。

票数 1
EN

Stack Overflow用户

发布于 2020-07-15 18:21:44

与上面相同的答案,最新的代码更新:

代码语言:javascript
复制
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);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47178566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档