对于我正在开发的一个应用程序,我需要实现可访问性。除了一个屏幕之外,其他一切都正常。在这个屏幕上,我必须向我的Activity中添加片段。基本上,上面的片段是一个拨号键盘,用于输入密码。这个片段添加了一个fragmentTransaction。
问题是对讲的焦点被设置在下面片段的元素上。
你知道有没有办法把对讲焦点设置在拨号片段上吗?我只想“禁用”下面的片段来获得焦点
谢谢你,
对于我正在开发的一个应用程序,我需要实现可访问性。除了一个屏幕之外,其他一切都正常。在这个屏幕上,我必须向我的Activity中添加片段。基本上,上面的片段是一个拨号键盘,用于输入密码。这个片段添加了一个fragmentTransaction。
问题是对讲的焦点被设置在下面片段的元素上。
你知道有没有办法把对讲焦点设置在拨号片段上吗?我只想“禁用”下面的片段来获得焦点
谢谢你,
7条答案
按热度按时间dwbf0jvd1#
更新
我想出了解决办法。你可以在做片段事务之前禁用第一个片段的可访问性。
现在提交片段事务,第二个片段不会将焦点泄漏给第一个片段。
不要忘记启用第一个片段的可访问性,以防您返回到第一个片段。
uqcuzwp82#
您是否正在使用fragmentTransaction.add?
如果是这样的话,您应该使用fragmentTransaction.replace!
添加功能在单击下面的片段视图时也出现问题。
所以,请使用replace。
mi7gmzs63#
您的问题并不是将焦点“发送”到正确的位置。强制焦点移动到不同的位置通常是个坏主意,而且无法访问。您的问题是屏幕上有一些元素不可见,但正在被TalkBack聚焦。您需要做的是对TalkBack隐藏这些元素。实际上,您可能希望完全删除它们,但我们假设它们需要显示在屏幕上,您可以做的是对辅助功能服务隐藏它们:
这将隐藏这些视图,使TalkBack无法看到它们。这是一个比强制聚焦到某个特定元素更好的解决方案,因为在WCag 2.0下,这通常是一个可访问性冲突。尽管如果屏幕上的元素没有被你的“top”片段完全隐藏,这也是一个冲突,你实际上应该让它保持原样。
mwkjh3gx4#
查看方法视图。
sendAccessibilityEvent
(AccessibilityEvent.TYPE_VIEW_FOCUSED)。sendAccessibilityEvent
将焦点从反馈中更改。我对反馈了解不多,请阅读SO@When using TalkBack, what is the preferred way to alert the user when the contents of a TextView have changed?上的链接。祝你好运
vsnjm48y5#
也许可以在第二个片段恢复时调用requestAccessibilityFocus()
i7uaboj46#
正在添加
内部
onResume
并添加了
在
onPause
里面对我有用。55ooxyrt7#
使用replace fragment而不是add fragment是IMO的最佳解决方案,请参阅此处
https://stackoverflow.com/a/21684520/3540391