Ostrzeżenie dotyczące zawartości Android Lint


132

Otrzymuję ostrzeżenie „[Dostępność] Brak atrybutu contentDescription w obrazie” dla widoku obrazu. podczas korzystania z androida lint

Co to znaczy?


5
to jest takie irytujące ostrzeżenie - szczególnie w przypadku zdjęć, które są tylko dla stylu
Someone Somewhere

6
Zdefiniowałem to w strings.xml: <string name="none"></string> a następnie użyłemandroid:contentDescription="@string/none"
Someone Somewhere

Odpowiedzi:


171

Rozwiązano to ostrzeżenie, ustawiając atrybut android:contentDescriptiondla mojego ImageView

android: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.



51

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"

38

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" />

Niepoprawnie - dodanie narzędzi: ignore = "contentDescription" do RelativeLayout doprowadziło do błędu kompilacji "W atrybucie brakuje prefiksu przestrzeni nazw Androida"
G. Kh.

3
To jest problem zaćmienia. Po prostu wyczyść swój projekt. I upewnij się, że: xmlns: tools = " schemas.android.com/tools " jest również uwzględnione!
Gunnar Bernstein

25

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.


1
Dzięki! Podanie tego opisu jest zawsze najlepszym wyborem, aby pominąć ostrzeżenie.
Vinicius Paldês

12

Ponieważ jest to tylko ostrzeżenie, możesz je stłumić. Przejdź do układu graficznego XML i wykonaj następujące czynności:

  1. Kliknij czerwony przycisk w prawym górnym rogu

    wprowadź opis obrazu tutaj

  2. Wybierz „Wyłącz typ problemu” (na przykład)

    wprowadź opis obrazu tutaj


4
To prawda, możesz to stłumić, ale prawdopodobnie powinieneś postępować zgodnie z radą wybranej odpowiedzi, ze względu na użytkowników, którzy polegają na narzędziach dostępności, które zapewnia Android.
Kyle Falconer,

To jest to!!! to jest to, czego szukałem. Dopadła mnie ta odpowiedź i odpowiedź @Gunnar Bernstein.
IronBlossom

3

Przejdź do Gradlepliku (aplikacja modułu), dodaj poniższy blok kodu

android {
    ... 
    lintOptions {
        disable 'ContentDescription'
    }
    ...
}

Żadnego więcej ostrzeżenia! szczęśliwego kodowania


miłego kodowania, ale pamiętaj, że zaszkodzi to dostępności dla osób, które faktycznie na nim polegają
jestem żabim smokiem

3

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"

1

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"


1

ContentDescriptionpotrzebne 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 appfolderze.

wprowadź opis obrazu tutaj


1

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”


android: importantForAccessibilty był dokładnie tym, czego szukałem. Dziękuję Ci!
Hrafn

To jest rzeczywiście prawidłowa odpowiedź i powinna być najważniejsza.
od

0

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.