Otrzymuję ostrzeżenie „[Dostępność] Brak atrybutu contentDescription w obrazie” dla widoku obrazu. podczas korzystania z androida lint
Co to znaczy?
android
android-layout
android-lint
Santhosh Shettigar
źródło
źródło
<string name="none"></string>
a następnie użyłemandroid:contentDescription="@string/none"
Odpowiedzi:
Rozwiązano to ostrzeżenie, ustawiając atrybut
android:contentDescription
dla mojego ImageViewandroid:contentDescription="@string/desc"
Obsługa Android Lint w ADT 16 generuje to ostrzeżenie, aby upewnić się, że widżety obrazu dostarczają opis contentDescription.
Definiuje tekst, który krótko opisuje zawartość widoku. Ta właściwość jest używana głównie ze względu na dostępność. Ponieważ niektóre widoki nie mają reprezentacji tekstowej, ten atrybut może być użyty do jej dostarczenia.
Widżety nietekstowe, takie jak ImageViews i ImageButtons, powinny używać atrybutu contentDescription, aby określić tekstowy opis widgetu, tak aby czytniki ekranu i inne narzędzia ułatwień dostępu mogły odpowiednio opisywać interfejs użytkownika.
źródło
Wyłączenie ostrzeżeń o kłaczkach może później łatwo spowodować problemy. Lepiej jest po prostu określić contentDescription dla wszystkich swoich ImageViews. Jeśli nie potrzebujesz opisu, po prostu użyj:
android:contentDescription="@null"
źródło
Inną opcją jest indywidualne wyłączenie ostrzeżenia:
xmlns:tools="http://schemas.android.com/tools" (usually inserted automatically) tools:ignore="contentDescription"
Przykład:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:ignore="contentDescription" > <ImageView android:layout_width="50dp" android:layout_height="match_parent" android:adjustViewBounds="true" android:padding="5dp" android:src="@drawable/icon" />
źródło
Polecam dodanie contentDescription.
android:contentDescription="@string/contentDescriptionXxxx"
ale bądźmy realistami. Większość ludzi nie uważa dostępności za dosłowne. Mimo to przy niewielkim wysiłku możesz wdrożyć coś, co pomoże osobom niepełnosprawnym.
<string name="contentDescriptionUseless">deco</string> <string name="contentDescriptionAction">button de action</string> <string name="contentDescriptionContent">image with data</string> <string name="contentDescriptionUserContent">image from an other user</string>
.
Najważniejszą rzeczą, jaką powinien wiedzieć niewidomy użytkownik, jest „Gdzie jest przycisk, który muszę kliknąć, aby kontynuować”
Użyj contentDescriptionAction do wszystkiego, co można kliknąć.
użyj contentDescriptionContent dla obrazu z informacjami (graph, textAsImage, ...)
użyj contentDescriptionUserContent dla wszystkich treści dostarczonych przez użytkownika.
do pozostałej części użyj contentDescriptionUseless.
źródło
Ponieważ jest to tylko ostrzeżenie, możesz je stłumić. Przejdź do układu graficznego XML i wykonaj następujące czynności:
Kliknij czerwony przycisk w prawym górnym rogu
Wybierz „Wyłącz typ problemu” (na przykład)
źródło
Przejdź do
Gradle
pliku (aplikacja modułu), dodaj poniższy blok koduandroid { ... lintOptions { disable 'ContentDescription' } ... }
Żadnego więcej ostrzeżenia! szczęśliwego kodowania
źródło
Jeśli chcesz ukryć to ostrzeżenie w elegancki sposób (ponieważ masz pewność, że dostępność nie jest potrzebna dla tego konkretnego ImageView), możesz użyć specjalnego atrybutu:
android:importantForAccessibility="no"
źródło
Widżety nietekstowe wymagają opisu zawartości w pewien sposób, aby opisać obraz w formie tekstowej, tak aby czytelnicy ekranów mogli opisać interfejs użytkownika. Możesz zignorować właściwość lub zdefiniować właściwość
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="contentDescription"
android:contentDescription="your description"
źródło
ContentDescription
potrzebne do ułatwień dostępu w systemie Android. Szczególnie w przypadku funkcji czytnika ekranu. Jeśli nie obsługujesz ułatwień dostępu na Androidzie, możesz to zignorować, korzystając z konfiguracji Lint .Po prostu stwórz
lint.xml
.<?xml version="1.0" encoding="UTF-8"?> <lint> <issue id="ContentDescription" severity="ignore" /> </lint>
I umieść go w
app
folderze.źródło
W przypadku elementów graficznych, które mają wyłącznie charakter dekoracyjny, ustaw ich odpowiednie atrybuty XML android: contentDescription na „@null”.
Jeśli Twoja aplikacja obsługuje tylko urządzenia z Androidem 4.1 (poziom interfejsu API 16) lub nowszym, możesz zamiast tego ustawić atrybuty android: importantForAccessibility XML dla tych elementów na „no”
źródło
Ponieważ potrzebuję ImageView, aby dodać ikonę tylko dla estetyki, dodałem
tools:ignore="ContentDescription"
w każdym ImageView, który miałem w moim pliku xml.Nie otrzymuję już żadnych komunikatów o błędach
źródło