警告
在使用ImageView时如下警告:
Missing contentDescription attribute on image less... (Ctrl+F1)
Non-textual widgets like ImageViews and ImageButtons should use the contentDescription attribute to specify a textual description of the widget such that screen readers and other accessibility tools can adequately describe the user interface. Note that elements in application screens that are purely decorative and do not provide any content or enable a user action should not have accessibility content descriptions. In this case, just suppress the lint warning with a tools:ignore="ContentDescription" attribute. Note that for text fields, you should not set both the hint and the contentDescription attributes since the hint will never be shown. Just set the hint. See http://developer.android.com/guide/topics/ui/accessibility/checklist.html#special-cases.
像ImageViews和ImageButtons这样的非文本控件,应该使用contentDescription属性来指定控件的文本描述,以便屏幕阅读器和其他辅助工具能够充分描述用户界面。注意,应用程序屏幕中那些纯粹是装饰性的、不提供任何内容或用户不可操作的元素不应该具有易访问性内容描述。在这种情况下,只需要使用tools:ignore="ContentDescription"来禁止lint警告。注意,对于文本控件,不要同时设置hint和contentDescription属性,因为永远不会显示hint,所以只需要设置hint。参见http://developer.android.com/././ui/access./checklist.html。
Make apps more accessible
为了方便视力障碍人士更好地使用APP,开发者应该标记UI元素,标记信息的作用是解释可操作控件的意义或者目的。这些标记信息可以被TalkBack这样的辅助软件读取,然后通过语音告知有视力障碍的用户,让他们更好地使用APP。
Label UI elements
有两种不同的标记方式,分别对应两种不同的情况:
- 静态:如果控件外观并不随着Activity的生命周期而改变,就在xml文件中使用标签进行标记。
- 动态:如果随着Activity生命周期的改变,控件会改变外观,那么应该在逻辑代码中进行标记。
根据不同的控件类型,标记方法也不同:
- 对于ImageView、ImageButton这样的图片控件,使用
android:contentDescription
在xml文件中进行静态标记,或者使用setContentDescription()
进行动态标记。
如果图片控件纯粹是装饰用,那么应该把android:contentDescription
标签的值设置为"@null"
;
如果APP只支持Android 4.1(API 17)及以上,就把android:importantForAccessibility
标签的值设置为"no"
; - 对于可编辑控件,例如EditText,不要使用
contentDescription
,只需要使用hint
。 - 辅助软件会自动捕捉TextView中的文字,所以不需要进行标记。