【问题标题】:Android Lint contentDescription warningAndroid Lint 内容描述警告
【发布时间】:2011-12-14 06:55:37
【问题描述】:

我收到警告 imageview 的“[辅助功能] 缺少图像上的 contentDescription 属性”。在使用 android lint 时

这是什么意思?

【问题讨论】:

  • 这是一个非常烦人的警告——尤其是对于那些只是为了炫耀的图像
  • 我在 strings.xml 中定义了这个:<string name="none"></string> 然后我使用了android:contentDescription="@string/none"

标签: android android-layout android-lint


【解决方案1】:

通过为我的 ImageView 设置属性 android:contentDescription 解决了这个警告

android:contentDescription="@string/desc"

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

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

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

【讨论】:

【解决方案2】:

禁用 Lint 警告很容易让您以后遇到麻烦。你最好只为所有的 ImageView 指定 contentDescription。如果您不需要描述,则只需使用:

android:contentDescription="@null"

【讨论】:

    【解决方案3】:

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

    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" />
    

    【讨论】:

    • 不正确 - 将 tools:ignore="contentDescription" 添加到 RelativeLayout 导致编译错误“属性缺少 Android 命名空间前缀”
    • 这是一个日食问题。只需清理您的项目。并确保: xmlns:tools="schemas.android.com/tools" 也包括在内!
    【解决方案4】:

    我建议您添加 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。

    使用 contentDescriptionUseless 其余的。

    【讨论】:

    • 谢谢!提供此描述而不是禁止警告始终是最佳选择。
    【解决方案5】:

    由于它只是一个警告,您可以将其隐藏。转到 XML 的图形布局并执行以下操作:

    1. 点击右上角红色按钮

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

    【讨论】:

    • 没错,你可以抑制它,但为了依赖 Android 提供的辅助工具的用户,你可能应该遵循所选答案的建议。
    • 就是这个!!!这就是我要找的。这个答案和@Gunnar Bernstein 的答案让我明白了。
    【解决方案6】:

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

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

    没有更多警告!快乐编码

    【讨论】:

    • 愉快的编码,但请注意,这会损害真正依赖它的人的可访问性
    【解决方案7】:

    如果您想以优雅的方式抑制此警告(因为您确定此特定 ImageView 不需要可访问性),您可以使用特殊属性:

    android:importantForAccessibility="no"
    

    【讨论】:

      【解决方案8】:

      Android 可访问性需要ContentDescription。 特别是对于屏幕阅读器功能。 如果您不支持 Android 可访问性,您可以忽略它 设置Lint

      所以只需创建lint.xml

      <?xml version="1.0" encoding="UTF-8"?>
      <lint>
      
          <issue id="ContentDescription" severity="ignore" />
      
      </lint>
      

      并将其放入app 文件夹。

      【讨论】:

        【解决方案9】:

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

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

        【讨论】:

        • android:importantForAccessibilty 正是我想要的。谢谢!
        • 这确实是正确答案,应该是第一名。
        【解决方案10】:

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

        【讨论】:

          【解决方案11】:

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

          我不再收到任何错误消息

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-08-23
            • 2022-12-19
            • 2018-09-27
            • 1970-01-01
            • 1970-01-01
            • 2010-11-11
            • 2017-03-20
            • 2019-10-03
            相关资源
            最近更新 更多