对于我工作的应用程序,我需要实现可访问性。一切都很好,除了一个屏幕,我必须添加到我的活动片段。基本上,上面的片段是一个输入密码的拨号键盘。这个片段添加了一个fragmentTransaction。
问题是对讲机的焦点设置在下面片段的元素上。
你知道有没有办法把对讲机的焦点放在刻度盘上吗?我只想“禁用”下面的片段以获得焦点。
谢谢,
发布于 2017-02-28 18:56:47
更新
我想出了解决办法。在执行片段事务之前,可以禁用第一个片段的可访问性。
rootView = inflater.inflate(R.layout.first_fragment, null, false);
rootView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);现在你提交你的碎片事务。第二个片段不会将焦点泄露给第一个片段。
不要忘记启用第一个片段的可访问性,以防您回到第一个片段。
if(rootView != null) {
rootView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);
}发布于 2018-01-02 14:53:39
你在用fragmentTransaction.add吗?
如果是这样的话,你应该使用fragmentTransaction.replace!
Add函数在单击下面的片段视图时也出现了问题。
所以请用替换。
发布于 2015-05-19 13:27:24
你的问题不是把焦点“送”到正确的地方。强迫人们把注意力集中在不同的地方通常是个坏主意,而且是不可接近的。您的问题是,屏幕上有一些元素是不可见的,但这些元素正被TalkBack所关注。您想要做的是对TalkBack隐藏这些元素。实际上,您可能希望完全删除它们,但是让我们假设它们需要在屏幕上。您可以做的是将它们隐藏在可访问性服务中:
rootViewOfFragment.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);这将对TalkBack隐藏这些视图。这是一个比强制将焦点集中到特定元素更好的解决方案,因为这通常是WCag 2.0下的可访问性冲突。虽然如果屏幕上的元素没有被你的“顶部”片段完全隐藏,这也是一种违反,你实际上应该让事情发生。
https://stackoverflow.com/questions/30225636
复制相似问题