Lint抱怨他们设置了一个内容描述。因此,为了避免创建字符串,我将其设置为null。
android:contentDescription="@null"
这似乎平息了棉绒的抱怨。我有点迷失为什么我需要设置一个对contentDescription的字符串引用。这样做的目的是什么?为什么我需要这个?并且基本上将其设置为null,这是一个好主意吗?
答案 0 :(得分:26)
这是盲人的可访问性。对于辅助功能,使用contentDescription
的应用可以帮助盲人使用Android的文字转语音功能进行导航。因此,如果有人通过触控板或其他内容选择ImageButton
,则TTS可以说contentDescription
,以便他们可以轻松导航应用。有关详细信息,请参阅this。
回答你的问题:它可能使lint输出静音,但它没有做任何不好的或好的事情。
答案 1 :(得分:16)
我知道这个问题是在前一段时间被问过的,但是为了新读者的利益可能会遇到这个问题:
Brian对于使用的contentDescription绝对正确。但是,有时候将它设置为@null不仅合适,而且首选。 如果图片纯粹是装饰性的,不可点击或与内容相关,则应将contentDescription设置为@null。否则,将其设置为有意义的内容。
记住设置为contentDescription的任何设备在使用屏幕阅读器时都会被设备读出。想象一下简单的弹出对话框。现在,在心理上听同一个对话框的这两个不同的内容描述:
"Information icon. Do you want to continue? Fancy horizontal rule. Button. Button."
-vs-
"Do you want to continue? Submit. Cancel."
没有经过深思熟虑的内容描述最终听起来很愚蠢。应该使用@null抑制诸如标注图标之类的项目,这些图标只是重复它们旁边的文本或不会对页面含义做出贡献的花哨边框。相反,可点击的所有内容不仅必须具有描述,还需要具有有意义的描述。如果你试图在可点击的东西上设置@null,设备会说"按钮"代替。将描述更改为"绿色按钮"没有帮助。不要让用户猜测"绿色按钮"是!
如果您不确定,请不要忘记您可以在手机上启用TalkBack。它已在大多数设备上预先安装,或者您可以从Play商店获取。您需要在旧设备上使用d-pad,或通过触摸ICS及更高版本进行探索。