Android Lint contentDescription警告


130

我收到警告,警告“ imageview的[[Accessibility] Missing contentDescription attribute on image”。在使用android lint时

那是什么意思?


5
这是一个令人讨厌的警告-特别是对于那些只适合个性的图像
某处某人2012年

6
我在strings.xml中定义了此代码:<string name="none"></string> 然后我使用了android:contentDescription="@string/none"
Somewhere Somewhere,2012年

Answers:


170

通过设置android:contentDescription我的ImageView 属性来解决此警告

android:contentDescription="@string/desc"

ADT 16中的Android Lint支持抛出此警告,以确保图像小部件提供contentDescription。

这定义了简短描述视图内容的文本。此属性主要用于可访问性。由于某些视图没有文本表示,因此可以使用此属性来提供此类表示。

非文本小部件(如ImageViews和ImageButtons)应使用contentDescription属性指定小部件的文本描述,以便屏幕阅读器和其他辅助功能工具可以充分描述用户界面。



49

禁用Lint警告会在以后很容易使您陷入麻烦。最好只为所有ImageView指定contentDescription。如果您不需要描述,请使用:

android:contentDescription="@null"

38

另一种选择是单独禁止警告:

xmlns:tools="http://schemas.android.com/tools"  (usually inserted automatically)
tools:ignore="contentDescription"

例:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    tools:ignore="contentDescription" >

       <ImageView
            android:layout_width="50dp"
            android:layout_height="match_parent"
            android:adjustViewBounds="true"
            android:padding="5dp"
            android:src="@drawable/icon" />

错误-向RelativeLayout中添加tools:ignore =“ contentDescription”会导致编译错误“属性缺少Android名称空间前缀”
G. Kh。

3
这是一个月食问题。只是清理您的项目。并确保:还包括xmlns:tools =“ schemas.android.com/tools ”!
Gunnar Bernstein

24

我建议您添加contentDescription。

android:contentDescription="@string/contentDescriptionXxxx"

但是,让我们现实一点。大多数人不维护可访问性的字面意义。不过,您可以不费吹灰之力就能实施一些帮助残障人士的措施。

<string name="contentDescriptionUseless">deco</string>
<string name="contentDescriptionAction">button de action</string>
<string name="contentDescriptionContent">image with data</string>
<string name="contentDescriptionUserContent">image from an other user</string>

盲人用户需要知道的最重要的事情是“我需要单击以继续的按钮在哪里”

对任何可单击的内容使用contentDescriptionAction。

将contentDescriptionContent用于具有信息的图像(图形,textAsImage等)

对所有用户提供的内容使用contentDescriptionUserContent。

使用contentDescription对其余所有内容无用。


1
谢谢!始终提供此描述而不是禁止警告是最佳选择。
ViniciusPaldês2015年

12

由于这只是警告,因此您可以取消它。转到XML的图形布局,然后执行以下操作:

  1. 点击右上角的红色按钮

    在此处输入图片说明

  2. 选择“禁用问题类型”(例如)

    在此处输入图片说明


4
没错,您可以抑制它,但为了依赖Android提供的辅助功能工具的用户,您可能应该遵循所选答案的建议。
凯尔·法尔康纳

就是这个!!!多数民众赞成在我想要的。这个答案和@Gunnar Bernstein的答案吸引了我。
IronBlossom 2015年

3

如果要以优美的方式禁止显示此警告(因为您确定此特定ImageView不需要辅助功能),则可以使用特殊属性:

android:importantForAccessibility="no"

2

转到Gradle文件(模块应用),在下面的代码块中添加

android {
    ... 
    lintOptions {
        disable 'ContentDescription'
    }
    ...
}

没有更多警告!快乐编码


快乐的编码,但是请注意,这将损害实际依赖它的人们的可访问性
我是青蛙龙

1

非文本窗口小部件需要以某种方式进行内容描述以文本形式描述图像,以便屏幕阅读器能够描述用户界面。您可以忽略该属性或定义该属性xmlns:tools="http://schemas.android.com/tools"
tools:ignore="contentDescription"
android:contentDescription="your description"


1

ContentDescription需要Android辅助功能。特别适用于屏幕阅读器功能。如果您不支持Android辅助功能,则可以使用Lint安装程序将其忽略。

因此,只需创建lint.xml

<?xml version="1.0" encoding="UTF-8"?>
<lint>

    <issue id="ContentDescription" severity="ignore" />

</lint>

并将其放入app文件夹。

在此处输入图片说明


1

对于纯装饰性图形元素,请将其各自的android:contentDescription XML属性设置为“ @null”。

如果您的应用仅支持运行Android 4.1(API级别16)或更高版本的设备,则可以将这些元素的android:importantForAccessibility XML属性设置为“否”


android:importantForAccessibilty正是我想要的。谢谢!
哈芬

这确实是正确的答案,应该是头号答案。
lsrom

0

因为我需要ImageView添加一个图标只是为了美观,所以tools:ignore="ContentDescription"我已经在xml文件中的每个ImageView中添加了该图标。

我不再收到任何错误消息

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.