В чем разница между android:contentDescription="@null"
и tools:ignore="ContentDescription"
?
android: contentDescription = "@ null"
- Используется для указания того, чтоопределенный нетекстовый элемент не имеет смысла и предназначен только для оформления.
tools: ignore = "ContentDescription"
Для графических элементов, таких как ImageView
и ImageButton
.Если вы не установите соответствующие им атрибуты android:contentDescription
XML, отобразится предупреждающее сообщение lint.
"Missing contentDescription attribute on image"
Чтобы подавить это предупреждение lint, выдолжен использовать tools:ignore="ContentDescription"
в XML.
Я знаю, что оба они используются, чтобы указать, что определенный нетекстовый элемент не имеет смысла и предназначен только для украшения.Есть ли преимущество использования одного над другим, должен ли я использовать оба, предпочтение или оно считается лучше и новее другого?
Нет, они отличаются друг от друга в терминахиспользования, например
<ImageView
android:layout_width="200dp"
android:layout_height="300dp"
android:id="@+id/image_user_avatar"
android:contentDescription="User avatar"
tools:ignore="ContentDescription" />
При запуске приложения с TalkBack оно будет говорить "Аватара пользователя".
Должен ли я использовать android:importantForAccessibility="no"
?
Если ваше приложение поддерживает только устройства под управлением Android 4.1 (уровень API 16) или выше, вы можете установить атрибуты android:importantForAccessibility
XML этих элементов на "no"
вместо android:contentDescription="@null
.
Обновление
Так что в основном инструменты: 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.