以这个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"
还是使用所有这三个属性/属性太过夸张了?
答案 0 :(得分:2)
android:contentDescription="@null"
和有什么区别 和tools:ignore="ContentDescription"
?
用于图形元素,例如ImageView
和ImageButton
。如果未设置它们各自的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并被其忽略时,该视图将不会突出显示。