【问题标题】:'Missing contentDescription attribute on image' in XMLXML 中的“图像上缺少 contentDescription 属性”
【发布时间】:2012-04-01 14:34:00
【问题描述】:

我在 Eclipse 中收到关于 [Accessibility]Missing contentDescription 属性 on image 的警告。此警告显示在下面 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>

请帮我解决这个问题,感谢您的阅读。

【问题讨论】:

  • 新的ADT版本建议在imageview中添加android:contentDescription这个属性,只是一个建议,我认为你可以忽略这个,它不会产生编译错误,你也可以检查http://developer.android.com/reference/android/view/View.html#attr_android:contentDescription
  • 是的,没错

标签: android eclipse warnings accessibility android-imageview


【解决方案1】:

点击此链接获取解决方案: Android Lint contentDescription warning

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

android:contentDescription="@string/desc"

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

这定义了简要描述视图内容的文本。这 属性主要用于可访问性。由于有些观点不 具有文本表示此属性可用于提供 这样的。

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

这个解释链接:Accessibility, It's Impact and Development Resources

许多 Android 用户有残疾,需要他们进行互动 以不同的方式使用他们的 Android 设备。其中包括以下用户 有视觉、身体或与年龄有关的残疾,妨碍他们 完全看到或使用触摸屏。

Android 提供辅助功能和服务来帮助这些 用户更轻松地浏览他们的设备,包括文本到语音, 触觉反馈、轨迹球和方向键导航,增强了他们的 经验。 Android 应用程序开发人员可以利用这些 服务以使他们的应用程序更易于访问并构建 他们自己的无障碍服务。

本指南旨在让您的应用易于访问: Making Apps More Accessible

确保所有用户都可以访问您的应用程序相对而言 容易,尤其是当您使用框架提供的用户界面时 成分。如果您仅将这些标准组件用于您的 应用程序,只需几个步骤即可确保您的 应用程序可访问:

  1. 标记您的 ImageButtonImageViewEditText em>、CheckBox 和其他用户 使用 android:contentDescription 属性的界面控件。

  2. 使您的所有用户界面元素都可以通过定向访问 控制器,例如轨迹球或方向键。

  3. 通过启用 TalkBack 等无障碍服务来测试您的应用程序 并通过触摸探索, 并尝试仅使用方向控制来使用您的应用程序。

【讨论】:

  • 一个更重要的注意事项!在这种情况下,图像看起来纯粹是装饰性的,并没有向用户提供额外的信息。因此,例如,您不想对用户说“联系人图片”,但如果您不在其他任何地方显示该文本,您可能想说“Bob 的个人资料照片”。如果不应该向用户说出图像,您可以设置 android:contentDescription="@null" 并且警告将消失。
  • @alanv:很棒的评论。比通常建议的完全禁用警告要好得多。
  • 其实我不认为 android:contentDescription="@null" 是最好的解决方案。我正在使用 tools:ignore="ContentDescription" 这就是本意。确保在根布局中包含 xmlns:tools="schemas.android.com/tools"。
  • 感谢您提供这么好的文件。当您拥有壁纸库应用程序之类的图像时,是否适合为所有图像添加内容描述?它还会影响应用性能吗?
  • 在界面中使用某些类型的视图时,它们必须包含描述与该视图相关的目的或操作的内容标签。
【解决方案2】:

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

【讨论】:

  • @Jeroen- 当我添加描述时,它说:“无法解析资源 @string/loginText”- 这是为什么呢?
  • 字符串XML中有loginText字符串吗?
  • @JamalZafar 在 string.xml 中创建一个名为 loginText 的字符串
  • 一般模式应该是@string/accessibility_your_description
【解决方案3】:

更新:

正如 cmets 中所指出的,将 description 设置为 null 表示图像纯粹是装饰性的,并且会被 TalkBack 等屏幕阅读器理解。

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

对于所有寻找如何避免警告的人:

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

我正在使用tools:ignore="ContentDescription",这就是本意。

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

【讨论】:

  • 这个应该被点赞,因为它也是谷歌推荐的
  • 使用 @null 作为 contentDescription 是明确表示此图像纯粹是装饰性的一种方式。简单地忽略警告不是正确的解决方案。
  • 使用 @null 告诉 TalkBack 图片是装饰性的。您不应忽略该警告,因为输入 @null 会通知 TalkBack,而不是让它认为它丢失并且应该在那里。
【解决方案4】:

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

android:importantForAccessibility="no"

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

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

android:contentDescription="@null"

来源:https://developer.android.com/guide/topics/ui/accessibility/apps#label-elements

【讨论】:

    【解决方案5】:

    添加

    tools:ignore="ContentDescription"
    

    你的形象。确保您的根布局中有xmlns:tools="http://schemas.android.com/tools" .

    【讨论】:

    • +1。这是 Android Studio 对这个问题的修复(当你执行代码分析时,“抑制 Lint”按钮就是这样做的)
    • 不要忽略内容描述。您需要确定 imageview 代表什么:装饰性的或重要的东西。看看这里的其他选项。
    【解决方案6】:

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

    【讨论】:

    • 不要忽略此警告。正如其他人指出的那样,即使它只是一个装饰性图像,可访问性也很重要。添加想要的 contentDescription 没什么大不了的
    • 如果您的应用是一个即使有内容描述也基本上无法访问的应用,您也可以忽略该警告。例如,在需要视力才能玩的游戏中,为什么还要麻烦contentDescription
    • 是的,那激进的选择;那么知道它的目的并愿意遵守的人们会怎么做呢?我敢说,在这种特殊情况下,忘记“大多数”情况;这似乎意味着因为“大多数”人不是,例如,盲人这是一个不必要的警告?如果您的“大多数”图像不需要此类内容 - 好的,请禁用警告,但将其添加到有意义的地方。提供一点帮助可以大有帮助。
    • 还值得记住的是,许多使用屏幕阅读器或辅助技术的人至少有一些视力,因此可能能够玩游戏,但不能阅读或看到某些文本、图标、图像或颜色。因此,即使您无法预见,拥有相关的内容描述也会对人们有所帮助。
    【解决方案7】:

    如果您根本不在乎,请这样做:

        android:contentDescription="@null"
    

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

    【讨论】:

    • 其实我不认为 android:contentDescription="@null" 是最好的解决方案。我正在使用 tools:ignore="ContentDescription" 这就是本意。确保在根布局中包含 xmlns:tools="schemas.android.com/tools"。
    • 没有人这么说。再次阅读评论。您只是忽略警告,因此您提供的解决方案肯定会更糟。再次阅读最被接受的答案。
    【解决方案8】:

    此警告试图改善您的应用程序的可访问性。

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

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

    【讨论】:

      【解决方案9】:

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

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

      字符串.xml

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

      【讨论】:

      • 谢谢,不要忽略警告,每个人都应该了解发生了什么,谢谢 Kuldeep Singh 先生
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-31
      相关资源
      最近更新 更多