图片上缺少contentDescription属性'在XML中

我得到一个关于[可访问性]图像上缺少contentDescription属性在eclipse中的警告。这个警告显示在下面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>

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

329263 次浏览

点击以下链接获取解决方案: Android Lint内容描述警告

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

android: contentDescription =“@string / desc"

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

定义了简要描述视图内容的文本。这 属性主要用于可访问性。因为有些视图没有 有文本表示这个属性可以用来提供吗 这样的。< / p > 非文本小部件,如ImageViews和ImageButtons应该使用 属性的文本描述 小部件,这样屏幕阅读器和其他辅助工具可以

这是解释的链接: 可访问性,影响和开发资源

许多Android用户有残疾,需要他们进行互动 以不同的方式使用他们的Android设备。这些用户包括 视力、身体或与年龄有关的残疾阻止了他们

Android提供了辅助功能和服务来帮助这些 用户更容易地使用他们的设备,包括从文本到语音, 触觉反馈,轨迹球和D-pad导航,增强他们的 体验。Android应用程序开发人员可以利用这些优势 服务,使其应用程序更易于访问和构建 他们自己的可访问性服务

这个指南是为了让你的应用更容易访问: 让应用更容易访问

确保你的应用程序可以被所有用户访问是相对的 很简单,特别是在使用框架提供的用户界面时 组件。如果你只使用这些标准组件 应用程序,只需几个步骤,以确保您的 应用程序是可访问的:

  1. 标签你的< >强ImageButton < / >强< >强ImageView < / >强EditText <强> < / >强< >强复选框< / >强和其他用户 接口控件使用< >强android: contentDescription < / >强属性

  2. 让你所有的用户界面元素都可以被定向访问

    .控制器,如轨迹球或方向键 通过打开诸如TalkBack之类的辅助服务来测试您的应用程序 触摸探索, 并尝试使用你的应用程序只使用方向控制

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

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

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

    android:contentDescription="@null"

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

更新:

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

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

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

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

我使用的是tools:ignore="ContentDescription",这就是我想要的。

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

添加

tools: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#label-elements

此警告试图提高应用程序的可访问性。

要在整个项目中禁用缺失内容描述警告,可以将其添加到应用程序模块build.gradle中

android {


...


lintOptions {
disable 'ContentDescription'
}
}

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

我们可以通过在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>