2011-12-14 12 views
120

Otrzymuję ostrzeżenie jako "[Dostępność] Brakujące atrybut contentDescription na obrazie" w celu wyświetlenia obrazu. podczas korzystania z android lintaZawartość Lint z systemem Android Ostrzeżenie o ostrzeżeniu

Co to oznacza?

+5

to jest takie irytujące ostrzeżenie - szczególnie dla obrazów, które są przeznaczone tylko dla stylu –

+6

Zdefiniowałem to w strings.xml: '' a następnie użyłem 'android: contentDescription =" @ string/none "' –

Odpowiedz

159

Rozwiązano to ostrzeżenie poprzez ustawienie atrybutu android:contentDescription dla mojego ImageView

android:contentDescription="@string/desc" 

wsparcie Android Lint w ADT 16 zgłasza to ostrzeżenie, aby upewnić się, że wzory graficzne zapewniają content Opis.

Definiuje tekst, który krótko opisuje treść widoku. Ta właściwość jest używana przede wszystkim w celu ułatwienia dostępu. Ponieważ niektóre widoki nie mają reprezentacji tekstowej, ten atrybut może być użyty do zapewnienia takich atrybutów.

Widoki nietekstowe, takie jak ImageViews i ImageButtons, powinny używać atrybutu contentDescription do określenia tekstowego opisu widgetu, tak aby czytniki ekranu i inne narzędzia ułatwień dostępu mogły odpowiednio opisywać interfejs użytkownika.

+3

możesz przeczytać więcej na ten temat i przetestować go samodzielnie, przechodząc do: http://android-developers.blogspot.com/2012/04/accessibility-are-you-serving-all-your. html i http://developer.android.com/guide/topics/ui/accessibility/apps.html#test –

12

Ponieważ jest to tylko ostrzeżenie, można je ukryć. Przejdź do XML układem graficznym i zrobić to:

  1. kliknij prawym górnym rogu czerwonego przycisku

    enter image description here

  2. Wybierz "Wyłącz Rodzaj Issue" (na przykład)

    enter image description here

+4

To prawda, że ​​możesz ją ukryć, ale prawdopodobnie powinieneś zastosować się do rady wybranej odpowiedzi, ze względu na użytkownicy, którzy korzystają z narzędzi ułatwień dostępu dostępnych w systemie Android. –

+0

To jest to !!! Tego właśnie szukałem. Ta odpowiedź i odpowiedź @Gunnara Bernsteina dotarły do ​​mnie. – IronBlossom

33

Kolejna operacja cja jest tłumić ostrzeżenie indywidualnie:

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

Niepoprawnie - dodawanie narzędzi: ignore = "contentDescription" do RelativeLayout doprowadziło do błędu kompilacji "Atrybutowi brakuje prefiksu przestrzeni nazw Androida" –

+1

To jest problem z zaćmieniem. Po prostu oczyść swój projekt. I upewnij się, że: xmlns: tools = "http://schemas.android.com/tools" jest również dołączony! –

40

Wyłączanie ostrzeżenia Lint będzie łatwo Ci w kłopoty później. Lepiej jest po prostu określić contentDescription dla wszystkich swoich ImageViews. Jeśli nie potrzebują opisu, a potem po prostu użyć:

android:contentDescription="@null" 
18

polecam Ci dodać content Opis.

android:contentDescription="@string/contentDescriptionXxxx" 

, ale bądźmy realistami. Większość ludzi nie utrzymuje dosłowności w kwestii dostępności. Nadal, przy niewielkim wysiłku, możesz zaimplementować coś, co pomoże osobom z niepełnosprawnością.

<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ą niewidomych użytkownik musi wiedzieć, „Gdzie jest przycisk, który trzeba kliknąć, aby kontynuować”

Używaj contentDescriptionAction niczego klikalne.

użycie contentDescriptionContent na obraz z informacjami (wykres, textAsImage, ...)

użycie contentDescriptionUserContent do wszystkich treści pod warunkiem użytkownika.

używać contentDescriptionUseless dla całej reszty.

+1

Dzięki! Zawsze jest najlepszym wyborem, aby podać ten opis zamiast tłumienia ostrzeżenia. –

Powiązane problemy