android:contentDescription =“ @ null”和tools:ignore =“ ContentDescription”有什么区别?使用android:importantForAccessibility =“ no”?

时间:2019-02-24 19:02:21

标签: android android-layout attributes imageview lint

以这个android布局XML代码段为例:

<ImageView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:padding="10dp"
        app:srcCompat="@drawable/bitcoin"
        android:contentDescription="@null"
        android:importantForAccessibility="no"
        tools:ignore="ContentDescription" />

android:contentDescription="@null"tools:ignore="ContentDescription"?有什么区别

我知道这两个词都是用来表示某个非文本元素没有任何意义,仅用于装饰。使用一个相对于另一个有优势吗?我应该同时使用它吗?是偏爱还是被认为比另一个更好更新?

此外,我应该使用android:importantForAccessibility="no"还是使用所有这三个属性/属性太过夸张了?

1 个答案:

答案 0 :(得分:2)

  

android:contentDescription="@null"和有什么区别   和tools:ignore="ContentDescription"

android:contentDescription =“ @ null”

  • 用于表示某些非文本元素没有任何意义,仅用于装饰。

tools:ignore =“ ContentDescription”

  • 用于图形元素,例如ImageViewImageButton。如果未设置它们各自的android:contentDescription XML属性,则会显示棉绒警告消息。

    "Missing contentDescription attribute on image"

  • 要禁止显示此棉绒警告消息,则必须在XML中使用tools:ignore="ContentDescription"

  

我知道它们都是用来表示某种非文本的   元素没有任何意义,仅用于装饰。使用一个相对于另一个有优势吗?我应该同时使用它吗?是偏爱还是被认为比另一个更好更新?

不,例如,它们在用法上彼此不同

<ImageView 
    android:layout_width="200dp"
    android:layout_height="300dp"
    android:id="@+id/image_user_avatar"
    android:contentDescription="User avatar"
    tools:ignore="ContentDescription" />

通过“话语提示”运行该应用时,系统会显示“用户头像”。

  

我应该使用android:importantForAccessibility="no"吗?

如果您的应用仅支持运行Android 4.1(API级别16)或更高版本的设备,则可以将这些元素的android:importantForAccessibility XML属性设置为"no",而不是android:contentDescription="@null

更新

  

因此,基本上,tools:ignore =“ ContentDescription”仅适用于   编译器和android:contentDescription =“ @ null”是针对用户用户的吗?

是的。

  

此外,我的“ minSdk”是14,而我的“ targetSdk”是28。   android:importantForAccessibility =“ no”和   android:contentDescription =“ @ null”?

是的,您可以同时设置两者,但是如果您在SDK低于16的设备上运行应用程序,android:importantForAccessibility="no"将被忽略。

  

android:contentDescription =“ @ null”与   android:importantForAccessibility =“ no”用于运行Android 4.1的设备   或更高?

它们略有不同。

android:contentDescription="@null":当用户在其上移动手指时,具有此属性的视图仍会突出显示,并且Accessibility Services会说出大声的虚拟文本,例如“按钮”等。

android:importantForAccessibility="no":具有此属性的视图已被应用程序禁用,因此当用户将手指移至Accessibility Services并被其忽略时,该视图将不会突出显示。