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?

Santhosh Shettigar
źródło
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.

Santhosh Shettigar
źródło
4
możesz przeczytać więcej na ten temat i przetestować go samodzielnie, odwiedzając : android-developers.blogspot.com/2012/04/ ... and developer.android.com/guide/topics/ui/accessibility/ ...
programista Androida
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"
Dane White
źródło
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" />
Gunnar Bernstein
źródło
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.

Chrystus
źródło
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

Sergio Carneiro
źródło
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

GianhTran
źródło
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"
Alexander Bernat
źródło
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"

Fokou Franklin
źródło
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

Yvgen
źródło
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”

AnhSang
źródło
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

MikNik
źródło