Android辅助功能IMPORTANT_FOR_ACCESSIBILITY_NO未得到尊重

时间:2015-09-16 05:41:18

标签: android accessibility talkback

在我的应用中,我的广告位于底层,在辅助功能(对讲)模式中,我不想要包含广告。为此,我将此AdView及其父级设置为IMPORTANT_FOR_ACCESSIBILITY_NOfocusable = false,但是当应用启动时(启用了对话功能),它不会得到尊重第一个关注的项目就是此广告。< / p>

我请求专注于所需的项目,广告仍然是专注的,如何才能使这个广告无法集中注意力?

3 个答案:

答案 0 :(得分:7)

当您将importantForAccessbility设置为no时,您只是隐藏了单个视图。您想要找到广告的布局,并隐藏它及其所有后代。

android:importantForAccessibility="noHideDescendants"

如果您想以编程方式执行此操作,您要查找的常量是:

IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS

注意:你绝对不应该这样做。广告对每个人都很烦人。分开是不平等的。通过隐藏来自VoiceOver的信息,甚至是烦人的信息,您至少破坏了六个WCag 2.0标准并使您的应用程序不易访问。

答案 1 :(得分:0)

这就是我所要做的 我已经阻止了后代焦点功能,默认情况下广告视图会在最后添加到视图中时获得。将广告视图包装在布局中并添加属性。

android:descendantFocusability="blocksDescendants"

我的要求是将焦点分配给我使用的屏幕中的第一个元素:

firstView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);
firstView.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);

我仍然同意我们不应该改变焦点,但这只是在广告的情况下。 该广告仍可通过触摸进行关注。

答案 2 :(得分:0)

直接从文档

android:importantForAccessibility 描述此视图对于可访问性是否重要。如果重要,则该视图将触发可访问性事件,并报告给查询屏幕的可访问性服务。 注意:尽管不建议使用,但可访问性服务可能会决定忽略此属性,并在视图树中的所有视图上进行操作。

尽管该注释本身没有任何意义:不建议使用什么,以及不推荐给谁?但可能意味着实际的可访问性服务(对讲等)可能不会考虑此功能。根据我的经验,它在API23中不起作用,但在Webview中的26中起作用。

相关问题