在上图中,您可以看到 TalkBack 选择了一个完全被遮挡的标签。如果我再次点击,则将选择顶部的整个面板(将其设置为可聚焦),这是所需的行为。
如何防止 TalkBack 选择完整(或部分)隐藏视图进行公告?
至少,我如何强制对讲首先选择顶部/模糊视图?
在上图中,您可以看到 TalkBack 选择了一个完全被遮挡的标签。如果我再次点击,则将选择顶部的整个面板(将其设置为可聚焦),这是所需的行为。
如何防止 TalkBack 选择完整(或部分)隐藏视图进行公告?
至少,我如何强制对讲首先选择顶部/模糊视图?
使用 Layout Inspector 找到这个标签并移除它的可见性。
根据 Android文档 要打开布局检查器,请执行以下操作:
在连接的设备或模拟器上运行您的应用程序。
单击工具 > 布局检查器。
在出现的“选择进程”对话框中,选择要检查的应用程序进程,然后单击“确定”。
Layout Inspector 捕获快照,将其保存为 .li 文件,然后将其打开。
以编程方式或在布局文件中将可见性设置为 GONE:
android:visibility="gone"
或者
nameOfLabel.setVisibility(View.GONE)
因此,没有足够的信息来完全回答这个问题。目前尚不清楚您的“学习”更多内容是否是一个模式对话框,因此需要处理,或者它是否可以保留在屏幕上并且与布局中较低的内容的交互应该保持可访问性。
场景 1:让我们假设“了解更多”对话框是一个模式,应该在其他所有事情之前处理,你想要的是使用自定义 AlertDialog。然后,Android 系统将设置所有重要属性,而不需要不同的权限。最终,Android 操作系统在这种情况下所做的就是添加一个带有 TYPE_SYSTEM_ALERT 的新视图,以确保对话框是屏幕上唯一可操作的内容(并且也只能访问!)。
https://developer.android.com/guide/topics/ui/dialogs.html#CustomLayout
场景 2:“了解更多”横幅不是模态的。您要做的是将视图隐藏在横幅后面。您可以通过设置来做到这一点view.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);
。
您可以添加下面的代码,因此 TalkBack 将忽略该视图/图像:
android:importantForAccessibility="no"
更新答案:
当视图被遮挡时,将其设置为被遮挡的根:
mainContentView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);
然后,当您恢复该视图时,请执行以下操作:
mainContentView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);