如何消除android layout.xml中的警告:“缺少contentDescription”

时间:2012-02-20 14:59:17

标签: android eclipse android-layout

<ImageView style="@style/LoaderPrevNext.Next" />

使用样式

<style name="LoaderPrevNext">
    <item name="android:layout_width">40dp</item>
    <item name="android:layout_height">80dp</item>
    <item name="android:layout_weight">0</item>
    <item name="android:scaleType">fitXY</item>
</style>

<style name="LoaderPrevNext.Next">
    <item name="android:src">@drawable/next_page</item>
    <item name="android:contentDescription">@string/img_desc_next_page</item>
</style>

[Accessibility] Missing contentDescription attribute on image警告让我很恼火。

如果我将contentDescription从样式移动或复制到ImageView标记,它就会消失,但由于src是在样式中定义的,我很乐意将它们保存在一起。

猜猜这只是一个SDK错误,但有些可能会有解决方法......

澄清:有问题的ImageView确实有一个内容描述,在LoaderPrevNext.Next样式中定义。警告是错误的。我对如何设置内容描述或如何将其破解为空的想法不感兴趣。

7 个答案:

答案 0 :(得分:6)

在Eclipse中 Window-&gt;偏好设置 - &gt; Android-&gt; Lint Erroe检查 - &gt;右侧向下滚动直至可访问性 - &gt;内容说明 - &gt;严重性 - &gt;选择忽略 - &gt;应用 - &GT;是

答案 1 :(得分:5)

如何取消Android辅助功能警告缺少contentDescription

这个问题的两个现有答案在技术上都是正确的,但我相信有更好的方法。第一个答案建议关闭所有contentDescription警告。虽然这有效,contentDescription有一个原因,也许不应该全局关闭所有内容。

第二个答案显示了如何指定contentDescription。虽然这确实会使警告消失,但它并不适合所有内容,并且在技术上不回答问题,尽管它是一种有效的解决方法。

lint的Android文档提供了最佳解决方案,即IMO,它为某些内容提供contentDescription,并抑制其他内容的lint警告:

  

请注意应用程序屏幕中的元素纯粹是装饰性的   并且不提供任何内容或启用用户不应具有的操作   辅助功能内容说明。在这种情况下,只需抑制   带有tools:ignore="ContentDescription"属性的lint警告。

因此,请执行以下解决方案以删除所有lint警告:

  • 使用contentDescription在XML布局文件中定义android:contentDescription="Your description here.",以获取有趣或有用的资源 对用户有用的信息。和,
  • tools:ignore="ContentDescription"添加到纯装饰内容或 图像。

答案 2 :(得分:1)

如果您不想关闭/忽略lint警告,可以在strings.xml中定义一个空字符串

string.xml:

<string name="empty"></string>

然后在你的xml中设置值

<ImageView
    android:id="..."
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:contentDescription="@string/empty"/>

答案 3 :(得分:1)

要在整个项目中停用缺少内容说明警告,请将其添加到build.gradle

android {
    lintOptions {
        disable 'ContentDescription'
    }
}

答案 4 :(得分:0)

&LT; ImageView的

android:id = ...

android:layout_width = ... ...

android:contentDescription =“你的描述来自这里。如果它是一个字符串,则从字符串xml中获取”

/&GT;

答案 5 :(得分:0)

为什么要在Style中添加图像描述?

风格的目的是能够在一个地方改变某些地方的东西。

@string资源也是如此。只是不要把图像描述放在风格中。离开@string。一旦需要 - 改变该字符串本身。

答案 6 :(得分:0)

contentDescription标签用于android的屏幕阅读功能。您可以添加有关图片内容的字符串,也可以通过添加以下标签来禁止/忽略此警告。

tools:ignore="ContentDescription"