首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android TalkBack和片段堆栈

Android TalkBack和片段堆栈
EN

Stack Overflow用户
提问于 2015-05-13 21:39:41
回答 7查看 9K关注 0票数 11

对于我工作的应用程序,我需要实现可访问性。一切都很好,除了一个屏幕,我必须添加到我的活动片段。基本上,上面的片段是一个输入密码的拨号键盘。这个片段添加了一个fragmentTransaction。

问题是对讲机的焦点设置在下面片段的元素上。

你知道有没有办法把对讲机的焦点放在刻度盘上吗?我只想“禁用”下面的片段以获得焦点。

谢谢,

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2017-02-28 18:56:47

更新

我想出了解决办法。在执行片段事务之前,可以禁用第一个片段的可访问性。

代码语言:javascript
复制
rootView = inflater.inflate(R.layout.first_fragment, null, false);

rootView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);

现在你提交你的碎片事务。第二个片段不会将焦点泄露给第一个片段。

不要忘记启用第一个片段的可访问性,以防您回到第一个片段。

代码语言:javascript
复制
if(rootView != null) {
    rootView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);
}
票数 10
EN

Stack Overflow用户

发布于 2018-01-02 14:53:39

你在用fragmentTransaction.add吗?

如果是这样的话,你应该使用fragmentTransaction.replace!

Add函数在单击下面的片段视图时也出现了问题。

所以请用替换。

票数 2
EN

Stack Overflow用户

发布于 2015-05-19 13:27:24

你的问题不是把焦点“送”到正确的地方。强迫人们把注意力集中在不同的地方通常是个坏主意,而且是不可接近的。您的问题是,屏幕上有一些元素是不可见的,但这些元素正被TalkBack所关注。您想要做的是对TalkBack隐藏这些元素。实际上,您可能希望完全删除它们,但是让我们假设它们需要在屏幕上。您可以做的是将它们隐藏在可访问性服务中:

代码语言:javascript
复制
rootViewOfFragment.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);

这将对TalkBack隐藏这些视图。这是一个比强制将焦点集中到特定元素更好的解决方案,因为这通常是WCag 2.0下的可访问性冲突。虽然如果屏幕上的元素没有被你的“顶部”片段完全隐藏,这也是一种违反,你实际上应该让事情发生。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30225636

复制
相关文章

相似问题

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