Innehållsetikett

De som använder tillgänglighetsfunktioner, till exempel skärmläsare, förlitar sig på innehållsetiketter för att förstå vad elementen i ett gränssnitt betyder.

I vissa fall, till exempel när information förmedlas grafiskt inom ett element, kan innehållsetiketter ge en textbeskrivning av den innebörd eller åtgärd som är associerad med elementet.

Om element i ett användargränssnitt inte tillhandahåller innehållsetiketter kan det vara svårt för vissa användare att förstå informationen som presenteras för dem eller utföra åtgärder i gränssnittet.

Implementering

Visa

När vissa typer av View-objekt används i ett gränssnitt bör de tillhandahålla innehållsetiketter som beskriver syftet eller åtgärden som är associerad med View-objektet.

Så här tillhandahåller du innehållsetiketter

android:contentDescription

När du använder ImageView, ImageButton, CheckBox eller ett annat View-objekt som förmedlar grafisk information använder du attributet android:contentDescription för att ge View-objektet en innehållsetikett.

En innehållsetikett beror ibland på information som endast finns vid körning eller också kan betydelsen av ett View-objekt variera över tid. Till exempel kan en uppspelningsknapp ändras till en pausknapp under uppspelning av musik. I dessa fall använder du View#setContentDescription(CharSequence contentDescription) för att uppdatera innehållsetiketten vid lämplig tidpunkt.

När en tillgänglighetstjänst beskriver en ViewGroup kombinerar den vanligen innehållsetiketter från underordnade View-objekt. Om du vill åsidosätta det här beteendet och ange att du vill tillhandahålla en egen beskrivning av objektet och dess icke-fokuserbara underordnade View-objekt anger du en contentDescriptionViewGroup-objektet. Du kanske behöver inkludera innehållsetiketter från underordnade View-objekt i en contentDescription när de anges på ett ViewGroup-objekt.

android:hint

För EditText- eller redigerbara TextView-objekt anger du textfältets syfte med attributet android:hint. En android:contentDescription bör inte användas som en innehållsetikett för redigerbara View-objekt.

android:labelFor

Använd attributet android:labelFor för att ange att ett View-objekt ska fungera som innehållsetikett för ett annat View-objekt.

Fall som inte kräver innehållsetiketter

I vissa fall ska innehållsetiketter inte anges specifikt:

  • Text som återges i TextView (eller dess subklasser) tillhandahålls automatiskt till tillgänglighetstjänster. Ytterligare innehållsetiketter behövs vanligen inte.
  • Dekorativa bilder eller bilder som inte förmedlar meningsfull information grafiskt kräver inte innehållsetiketter. I de här fallen anger du ett android:contentDescription-attribut som "@null" eller ett android:importantForAccessibility-attribut som "no".

Om du vill veta mer kan du läsa om implementering av innehålletiketter i utvecklarinformationen för Android och API-guiderna.

Skriv

När vissa typer av Composable-objekt används i ett gränssnitt bör de tillhandahålla innehållsetiketter som beskriver syftet eller åtgärden som är associerad med Composable-objektet.

Så här tillhandahåller du innehållsetiketter

Innehållsbeskrivningar

Ange innehållsbeskrivningen om du vill tillhandahålla en innehållsetikett för Image, Icon eller ett annat Composable-objekt på låg nivå som förmedlar grafisk information.

  • En innehållsetikett kan vara beroende av körningsinformation och betydelsen för Composable-objektet kan ändras. Till exempel kan en uppspelningsknapp ändras till en pausknapp under uppspelning av musik.
  • I vissa fall vill du kanske sammanfoga element i ett element som det går att fokusera på och som samlar innehållsetiketterna från de underordnade elementen. Läs mer om att sammanfoga element.

Etikettparameter

Vissa Composables-objekt, som TextField, har stöd för en valfri label-parameter. När etiketten har angetts visar elementet det Composable-objekt som har överförts till label. Det går att använda tillgänglighetstjänster för att beskriva Composable-objektet.

Fall som inte kräver innehållsetiketter

I vissa fall bör innehållsetiketter inte läggas till:

  • Text som återges i Text, eller andra Composables-objekt som innehåller Text, tillhandahålls automatiskt för tillgänglighetstjänster.
  • Dekorativa bilder eller bilder som inte förmedlar meningsfull information grafiskt.
    • I de här fallen ska parametern contentDescription eller egenskapen Modifier.semantics#contentDescription ställas in på null eller anropa Modifier#clearAndSetSemantics.

Design

Vid utformningen av ett användargränssnitt ska du tänka noga på hur grafiskt representerat innehåll bör märkas för användare av tillgänglighetstjänster. Innehållsetiketterna bör följa de här principerna:

  • Var kortfattad och beskriv tydligt den innebörd eller åtgärd som är associerad med ett element.
  • Inkludera inte elementets typ eller tillstånd i innehållsetiketten.
  • Om elementet är associerat med en åtgärd beskriver du åtgärden, inte den grafiska representationen.
  • Ge inte användarna anvisningar för hur de specifikt interagerar med elementet.

Mer information finns i tillgänglighetsskrivguiden för Material Design.

Testning

Så här verifierar du manuellt att användargränssnittet i en app inte saknar innehållsetiketter:

  1. Aktivera TalkBack.
  2. Öppna appen.
  3. Flytta tillgänglighetsfokus till varje element på skärmen med linjära navigeringsgester.
  4. Om TalkBack flyttar fokus till ett visst element, men inte läser upp en meningsfull representation av det elementet eller läser upp meddelandet ”utan etikett”, kan det hända att elementet saknar en innehållsetikett.

Androids automatiserade testverktyg kan upptäcka saknade innehållsetiketter. Vi rekommenderar att du använder tillgångstestaren för Android för att testa appen manuellt på enheten. För automatiska tester kan du aktivera tillgänglighetskontrollerna i Espresso och Robolectric.

Sök
Rensa sökning
Stäng sökrutan
Huvudmeny
9987110412723315343
true
Sök i hjälpcentret
true
true
true
true
true
717068
false
false