如果某些内容无法访问,最好将其隐藏在UI中或标记android:importantForAccessibility =" no"?

时间:2018-01-17 00:00:29

标签: android accessibility talkback

我有一些Talkback用户无法访问的内容(谷歌地图视图)。当Talkback打开时隐藏此视图或者更好地仅标记android:更好吗?importantForAccessibility =" no"?

2 个答案:

答案 0 :(得分:1)

  1. 最好让它可以访问。您应该能够通过覆盖不可访问的视图层次结构的根的可访问性委托来覆盖任何开发人员蹩脚的可访问性实践。这允许您通过覆盖应用程序的可访问性层次结构并在其上创建自己的虚拟可访问性层,使应用程序中任何第三方库视图层次结构的视图可访问。这种方法适用于任何概念根本无法访问的视图,如钢琴应用程序,绘图应用程序或第一人称射击游戏......或类似的东西。
  2. 如果以上不是一个选项(它总是一个选项),但如果由于某些假设原因它不是,至少不要使用noHideDescendants方法。它最终没有完成任何事情......实际上,它只能用于隐藏视图的哪些元素实际上是可访问的。
  3. noHideDescendants所做的只是隐藏了视图及其所有孩子的辅助技术。隐藏某些东西的目的是什么,这是不可访问的?

    • 如果无法访问,通常意味着没有什么可隐藏的。
    • 如果你成功地使TalkBack不能集中注意力,你就隐藏了一些有用的东西。也许不是超级信息,但是,任何在没有入侵的情况下都会集中注意力的东西,可能会向用户呈现某种类型的信息或允许某种类型的交互。

    即使它只是为图像或某些奇怪的东西读取gif的名称,这通常总比没有好。特别是当您认为盲人用户不是TalkBack的唯一用户时。部分视力正常的用户也使用TalkBack。即使没有关于控件的信息,TalkBack仍然允许活动的东西可以集中。通过使用“noHideDescendants”,你只会让事情变得更糟。如果你被TalkBack读取

      

    blah_blah.jpeg,按钮,双击......

    那么,请看解决方案1 ​​......不要偷懒! :)

答案 1 :(得分:0)

这就是我们处理它的方式:

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:importantForAccessibility="noHideDescendants">

    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/store_map"
        android:name="com.google.android.gms.maps.SupportMapFragment" />
</RelativeLayout>

我想根据超级兴奋的@ChrisCM的回复进行更新。我们在地图下方的列表中包含相同的内容,因此用户仍然可以获得相同的结果。