我得到一个关于[可访问性]在eclipse图像上缺少contentDescription属性的警告。这个警告显示在下面XML代码中的第5行(声明ImageView)。

这不会使任何错误时,构建和运行我的应用程序。但我真的想知道为什么我得到这个警告。

这是我的XML文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content">
    <ImageView
        android:id="@+id/contact_entry_image"
        android:src="@drawable/ic_launcher"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
    <TextView
        android:id="@+id/contact_entry_text"
        android:text=""
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="30sp"
        />

</LinearLayout>

请帮助我,感谢您的阅读。


当前回答

它给你警告,因为图像描述没有定义。

我们可以通过在Strings.xml和activity_main.xml中添加下面的代码来解决这个警告

在Strings.xml中添加下面这行

<string name="imgDescription">Background Picture</string>
you image will be like that:
<ImageView
        android:id="@+id/imageView2"
        android:lay`enter code hereout_width="0dp"
        android:layout_height="wrap_content"
        android:contentDescription="@string/imgDescription"
        app:layout_editor_absoluteX="0dp"
        app:layout_editor_absoluteY="0dp"
        app:srcCompat="@drawable/background1"
        tools:layout_editor_absoluteX="0dp"
        tools:layout_editor_absoluteY="0dp" />

还要在activity_main.xml中添加这一行

android:contentDescription="@string/imgDescription"

Strings.xml

<resources>
    <string name="app_name">Saini_Browser</string>
    <string name="SainiBrowser">textView2</string>
    <string name="imgDescription">BackGround Picture</string>
</resources>

其他回答

如果你一点都不在乎,就这样做:

    android:contentDescription="@null"

虽然我会建议大家接受的解决方案,但这是一个hack:D

添加android:contentDescription="@string/description"(静态或动态)到你的ImageView。 请不要忽略或过滤消息,因为它是有帮助的人使用替代输入法,因为他们的残疾(如TalkBack, Tecla Access Shield等)。

更新:

正如评论中指出的那样,将描述设置为null表示该图像纯粹是装饰性的,并且被TalkBack等屏幕阅读器理解为。

老答案,我不再支持这个答案:

对于所有想要避免警告的人:

我不认为android:contentDescription="@null"是最好的解决方案。

我正在使用工具:ignore="ContentDescription",这就是应该是什么。

确保在根布局中包含xmlns:tools="http://schemas.android.com/tools"。

接下来,对于纯装饰性的图形元素,最好的解决方案是使用:

android:importantForAccessibility="no"

如果您的最小SDK版本至少是16,这是有意义的,因为运行较低版本的设备将忽略此属性。

如果你坚持支持旧版本,你应该使用(就像其他人已经指出的那样):

android:contentDescription="@null"

来源:https://developer.android.com/guide/topics/ui/accessibility/apps #标签元素

警告确实很烦人,在许多(大多数!)情况下,对于各种装饰性的ImageViews,没有必要使用contentDescription。解决这个问题最根本的方法就是告诉Lint忽略这个检查。在Eclipse中,转到Preferences中的“Android/Lint Error Checking”,找到“contentDescription”(它在“Accessibility”组中),并将“Severity:”更改为“Ignore”。