Android View

Označení obrázku jako dekorativního (Android View)

Dekorativní ImageView (ozdobný oddělovač, ilustrace vedle textu, který totéž říká slovně) nepotřebuje vlastní přístupné jméno — ale na rozdíl od Jetpack Compose tu jde contentDescription prostě vynechat a nic vás nedonutí se rozhodnout. Lint na to sice upozorní, ale dá se to snadno přehlédnout nebo umlčet nesprávně.

1. Jak na to — XML

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/divider_illustration"
    android:contentDescription="@null" />

android:contentDescription="@null" je výslovná deklarace „tenhle obrázek je dekorativní, a je to záměr" — ne totéž co atribut prostě vynechat. Od minSdkVersion 16 jde místo toho použít i:

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/divider_illustration"
    android:importantForAccessibility="no" />

Obě varianty jsou zdokumentované jako rovnocenné.

2. Jak na to — v kódu

imageView.contentDescription = null

3. Co lint odliší

Lintová kontrola ContentDescription v Android Studiu rozlišuje tři různé stavy, ne jen „má/nemá":

  • Atribut úplně chybí → varování „Missing contentDescription attribute on image".
  • Atribut je prázdný nebo vypadá jako zapomenutý placeholder ("", "TODO") → samostatné varování — vypadá to jako chyba, ne jako záměr.
  • @null nebo importantForAccessibility="no" → lint mlčí, protože je to výslovné rozhodnutí, ne opomenutí.

Prosté vynechání atributu tedy lint sice odchytí, ale je to pořád jen varování, které se dá přehlédnout — správný způsob, jak říct „vím o tom a je to záměr", je jedna ze dvou explicitních variant výše.

Proč to takhle je

  • @null a importantForAccessibility="no" existují proto, aby šlo rozlišit „autor na popisek zapomněl" od „obrázek popisek záměrně nemá" — bez nich lint nepozná rozdíl mezi chybou a rozhodnutím.
  • Prázdný řetězec "" není bezpečná náhrada za @null — lint ho odchytí jako podezřelý placeholder, ne jako platné označení dekorativního obsahu.
  • Programová cesta (contentDescription = null) dělá přesně totéž co android:contentDescription="@null" v XML — jde jen o to, jestli se hodnota nastavuje staticky, nebo za běhu.

Pravidla

  • WCAG 1.1.1 (Netextový obsah) — čistě dekorativní obsah nemá mít přístupné jméno vůbec, ne prázdné nebo zavádějící.

Zdroje

Štítky

Komentáře

Zatím zde nejsou žádné komentáře. Buďte první, kdo napíše svůj názor.

Přidat komentář k „Označení obrázku jako dekorativního (Android View)“