0

我可以看到importantForA11y是为了minSdk=6+

但是,如果他们可以使用,为什么还要使用它setConentDescription=@null呢?

importantForA11y=falsevs. setConentDescription=@nullvs.之间有什么区别focusable=false

4

1 回答 1

2

ImportantForAccessibility=false用于隐藏可访问性树中的任何元素,包括按钮、内容等。

contentDescription=null仅对您想要隐藏的图像(可能还有其他我想不到的项目)有用,否则辅助功能树将尽力为项目找到合适的名称。

一个典型的例子是ImageButton- 如果您使用contentDescription=null它,它将宣布“按钮”和目标/按钮文本。如果您使用ImportantForAccessibility=false它,它将完全从可访问性树中隐藏该项目。

我能想到的最好的类比(如果您熟悉 Web 标准)contentDescription就像一个alt属性或aria-labelledby属性,ImportantForAccessibility=false类似于aria-hidden="true".

关于focusable=false,这应该用于ImageViews 之类的东西,它应该始终与importantForAccessibility=false(或importantForAccessibility="no") 一起使用,以确保将纯装饰性的项目从可访问性树中完全删除。

可能有一些我无法想到的极端情况,请使用TalkBack或类似的屏幕阅读器对其进行测试。

于 2020-01-29T21:55:13.603 回答