android:contentDescription="@null" 和 tools:ignore="ContentDescription" 有什么区别?使用android:importantForAccessibility="no"?
What is the difference between android:contentDescription="@null" and tools:ignore="ContentDescription"? Use android:importantForAccessibility="no"?
以这个 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"
还是同时使用所有三个 attributes/properties 太过分了?
What is the difference between android:contentDescription="@null"
and tools:ignore="ContentDescription"
?
android:contentDescription="@null"
- 用于表示某个非文本元素没有任何意义,仅用于装饰。
工具:忽略="ContentDescription"
用于图形元素,例如 ImageView
和 ImageButton
。如果您不设置它们各自的 android:contentDescription
XML 属性,将显示一条 lint 警告消息。
"Missing contentDescription attribute on image"
要抑制此 lint 警告消息,则必须在 XML.
中使用 tools:ignore="ContentDescription"
I know both of them are used to indicate that a certain non-textual
element carries no meaning and is only meant for decoration. Is there an advantage of using one over the other, should I use both, is it preference, or is one considered better and newer than the other?
不是,它们在用法上彼此不同,例如
<ImageView
android:layout_width="200dp"
android:layout_height="300dp"
android:id="@+id/image_user_avatar"
android:contentDescription="User avatar"
tools:ignore="ContentDescription" />
当 运行使用 TalkBack 启动应用程序时,它会说 "User avatar"。
Should I use android:importantForAccessibility="no"
?
如果您的应用仅支持设备 运行ning Android 4.1(API 级别 16)或更高版本,您可以设置这些元素' android:importantForAccessibility
XML 属性为 "no"
而不是 android:contentDescription="@null
.
更新
So basically tools:ignore="ContentDescription" is only for the
compiler and android:contentDescription="@null" is for user user?
是的,是的。
Also, my 'minSdk' is 14 and my 'targetSdk' is 28. Can I still set both
android:importantForAccessibility="no" and
android:contentDescription="@null"?
是的,您可以同时设置它们,但是如果您 运行 SDK 低于 16 的设备上的应用程序,android:importantForAccessibility="no"
将被忽略。
Will android:contentDescription="@null" have the same effect as
android:importantForAccessibility="no" for devices running Android 4.1
or higher?
它们略有不同。
android:contentDescription="@null"
:当用户在其上移动手指时,具有此属性的视图仍会突出显示,辅助功能服务会大声读出 "Button" 等虚拟文本
android:importantForAccessibility="no"
:具有此属性的视图已被应用程序禁用,因此当用户移动手指时它不会突出显示并被辅助功能服务忽略。
以这个 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"
还是同时使用所有三个 attributes/properties 太过分了?
What is the difference between
android:contentDescription="@null"
andtools:ignore="ContentDescription"
?
android:contentDescription="@null"
- 用于表示某个非文本元素没有任何意义,仅用于装饰。
工具:忽略="ContentDescription"
用于图形元素,例如
ImageView
和ImageButton
。如果您不设置它们各自的android:contentDescription
XML 属性,将显示一条 lint 警告消息。"Missing contentDescription attribute on image"
要抑制此 lint 警告消息,则必须在 XML.
中使用
tools:ignore="ContentDescription"
I know both of them are used to indicate that a certain non-textual element carries no meaning and is only meant for decoration. Is there an advantage of using one over the other, should I use both, is it preference, or is one considered better and newer than the other?
不是,它们在用法上彼此不同,例如
<ImageView
android:layout_width="200dp"
android:layout_height="300dp"
android:id="@+id/image_user_avatar"
android:contentDescription="User avatar"
tools:ignore="ContentDescription" />
当 运行使用 TalkBack 启动应用程序时,它会说 "User avatar"。
Should I use
android:importantForAccessibility="no"
?
如果您的应用仅支持设备 运行ning Android 4.1(API 级别 16)或更高版本,您可以设置这些元素' android:importantForAccessibility
XML 属性为 "no"
而不是 android:contentDescription="@null
.
更新
So basically tools:ignore="ContentDescription" is only for the compiler and android:contentDescription="@null" is for user user?
是的,是的。
Also, my 'minSdk' is 14 and my 'targetSdk' is 28. Can I still set both android:importantForAccessibility="no" and android:contentDescription="@null"?
是的,您可以同时设置它们,但是如果您 运行 SDK 低于 16 的设备上的应用程序,android:importantForAccessibility="no"
将被忽略。
Will android:contentDescription="@null" have the same effect as android:importantForAccessibility="no" for devices running Android 4.1 or higher?
它们略有不同。
android:contentDescription="@null"
:当用户在其上移动手指时,具有此属性的视图仍会突出显示,辅助功能服务会大声读出 "Button" 等虚拟文本
android:importantForAccessibility="no"
:具有此属性的视图已被应用程序禁用,因此当用户移动手指时它不会突出显示并被辅助功能服务忽略。