【问题标题】:talkback is announcing hidden views对讲正在宣布隐藏视图
【发布时间】:2013-11-08 21:29:09
【问题描述】:

我正在为应用添加辅助功能,并且我正在使用 google 的对讲来测试辅助功能,但我无法阻止某些视图被选中。

除了删除所有侦听器和可聚焦性之外,还有什么更好的方法可以在视图隐藏在屏幕上时禁用它们获得焦点......即打开“抽屉”并禁用内容容器中的项目选择?似乎应该有一个更清洁的解决方案,或者可能需要在对讲团队方面进行修复。

谢谢

【问题讨论】:

  • 您要永久禁用对讲通知吗?
  • 您可以为 View 设置 importantForAccessibility="2" 以让 Talkback 忽略它。但是视图仍然是可聚焦/可点击的。由于DrawerLayoutView 类的后代,importantForAccessibility 属性应该适用于它。请参阅 View 类的文档以了解此属性可以采用的可能值:Link。不过,关于您要达到的目标,您的问题还不是很清楚。
  • 感谢您的回复。您的解决方案仅适用于 API 级别 >= 16,但是在 API 级别 16 之前的 android 中一直存在对讲。这个问题怎么不清楚?当我的应用程序处于某些状态以获取某些视图时,我只想禁用对讲“公告”。除了我的抽屉示例...另一个示例是当某些视图设置为不可见时,它们仍将被“宣布”,我想在不改变可见性的情况下防止这种情况消失。
  • 不可见的观点被宣布是奇怪的。您可以尝试另一种方法:使用AccessibilityDelegate(也可用于支持 v4 - AccessibilityDelegateCompat)。创建一个 AD 对象并覆盖 onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info)。如果 View('host') 可见,则调用 super 方法。将此对象用作yourView.setAccessibilityDelegate(ad_object) 的参数。看看有没有帮助。
  • 感谢用户!您的建议与 ViewCompat 相结合解决了我的问题。如果您想发布一个答案让我接受,那就太好了!

标签: android accessibility talkback


【解决方案1】:

查看 support-v4 库中的AccessibilityDelegateCompat - Link

创建AccessibilityDelegateCompat 的实例并覆盖以下方法:

@Override
public void onInitializeAccessibilityNodeInfo(View host, 
                                         AccessibilityNodeInfoCompat info) {

    // Check if 'host' is visible or not before calling the super method
    if (host.getVisibility() != View.INVISIBLE) {
        super.onInitializeAccessibilityNodeInfo(host, info);
    }
}

最后,对不可见的视图使用静态方法ViewCompat.setAccessibilityDelegate(View, AccessibilityDelegateCompat)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-18
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-23
    相关资源
    最近更新 更多