Vlastní contentDescription místo viditelného textu tlačítka (Android View)
Viditelný text tlačítka nemusí čtečce znít přirozeně — třeba počet v závorce („Všechny položky (42)") se přečte doslova jako „Všechny položky, otevírající závorka, 42, zavírající závorka". android:contentDescription umožňuje nahradit to, co TalkBack ohlásí, jiným textem, aniž by se muselo cokoli ručně skládat zpátky.
1. Špatně — spoléhat na výchozí přečtení viditelného textu
<Button
android:id="@+id/btnAllItems"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Všechny položky (42)" />
TalkBack přečte přesně to, co je vidět, včetně závorek a čísla ve stejném tvaru, jako je napsané v textu tlačítka.
2. Správně — vlastní contentDescription
<Button
android:id="@+id/btnAllItems"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Všechny položky (42)"
android:contentDescription="Všechny položky, 42 nepřečtených" />
Nebo v kódu, když se popisek mění za běhu podle stavu:
btnAllItems.contentDescription = if (unreadCount > 0) {
"Všechny položky, $unreadCount nepřečtených"
} else {
"Všechny položky, vše přečteno"
}
contentDescription nahrazuje jen to, co TalkBack o prvku řekne jako název — nic dalšího se neztrácí. Tlačítko zůstává tlačítkem (roli i akci kliknutí zajišťuje samotná třída Button), viditelný text android:text se dál zobrazuje sighted uživatelům beze změny. Nic se nemusí ručně doplňovat zpátky.
Proč to takhle je
contentDescriptionje čistě otázka jména, ne role ani akce — na rozdíl od přístupů, kde nahrazení sémantiky celého uzlu zahodí i roli a klikatelnost a je potřeba je ručně vrátit, tadyButtonsvoji roli a klikatelnost poskytuje sám bez ohledu na to, jaké jméno má.- Přístupný popis a viditelný text se mohou lišit obsahem i formulací — nemusí to být to samé, jen jinak formátované. Přístupná verze může nést informaci navíc, kterou viditelný text vůbec neřeší (např. „vše přečteno" pro nulový počet).
- Řešení funguje stejně pro jakýkoli
Views viditelným textem, ne jen proButton—TextView,Chip, položky seznamu apod.
Pravidla
- WCAG 4.1.2 (Název, role, hodnota) — přístupné jméno musí být programově zjistitelné a musí odpovídat účelu prvku, i když se liší od viditelného textu.
Komentáře
Zatím zde nejsou žádné komentáře. Buďte první, kdo napíše svůj názor.
Přidat komentář k „Vlastní contentDescription místo viditelného textu tlačítka (Android View)“