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. @nullneboimportantForAccessibility="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
@nullaimportantForAccessibility="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éž coandroid: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í.
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)“