В чем разница между android: contentDescription = "@ null" и инструментами: ignore = "ContentDescription"?Использовать андроид: важный для доступа = "нет"? - PullRequest
0 голосов
/ 24 февраля 2019

Возьмем этот фрагмент XML-макета Android, например:

<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 голосов
/ 25 февраля 2019

В чем разница между 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.

...