android-fragments Android TalkBack和片段堆栈

628mspwn  于 2022-11-14  发布在  Android
关注(0)|答案(7)|浏览(124)

对于我正在开发的一个应用程序,我需要实现可访问性。除了一个屏幕之外,其他一切都正常。在这个屏幕上,我必须向我的Activity中添加片段。基本上,上面的片段是一个拨号键盘,用于输入密码。这个片段添加了一个fragmentTransaction。
问题是对讲的焦点被设置在下面片段的元素上。
你知道有没有办法把对讲焦点设置在拨号片段上吗?我只想“禁用”下面的片段来获得焦点
谢谢你,

dwbf0jvd

dwbf0jvd1#

更新
我想出了解决办法。你可以在做片段事务之前禁用第一个片段的可访问性。

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);
}
uqcuzwp8

uqcuzwp82#

您是否正在使用fragmentTransaction.add?
如果是这样的话,您应该使用fragmentTransaction.replace!
添加功能在单击下面的片段视图时也出现问题。
所以,请使用replace。

mi7gmzs6

mi7gmzs63#

您的问题并不是将焦点“发送”到正确的位置。强制焦点移动到不同的位置通常是个坏主意,而且无法访问。您的问题是屏幕上有一些元素不可见,但正在被TalkBack聚焦。您需要做的是对TalkBack隐藏这些元素。实际上,您可能希望完全删除它们,但我们假设它们需要显示在屏幕上,您可以做的是对辅助功能服务隐藏它们:

rootViewOfFragment.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);

这将隐藏这些视图,使TalkBack无法看到它们。这是一个比强制聚焦到某个特定元素更好的解决方案,因为在WCag 2.0下,这通常是一个可访问性冲突。尽管如果屏幕上的元素没有被你的“top”片段完全隐藏,这也是一个冲突,你实际上应该让它保持原样。

mwkjh3gx

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?上的链接。
祝你好运

vsnjm48y

vsnjm48y5#

也许可以在第二个片段恢复时调用requestAccessibilityFocus()

@Override
public void onResume() {
    super.onResume();
    yourView.requestAccessibilityFocus();
}
i7uaboj4

i7uaboj46#

正在添加

view.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);`
view.performAccessibilityAction(AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS, null);

内部onResume
并添加了

view.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);

onPause里面对我有用。

55ooxyrt

55ooxyrt7#

使用replace fragment而不是add fragment是IMO的最佳解决方案,请参阅此处
https://stackoverflow.com/a/21684520/3540391

相关问题