Barrierefreiheit unter Android

Auf dieser Seite wird beschrieben, wie Sie die Android-Barrierefreiheits-APIs verwenden, um Apps gemäß der Checkliste für Barrierefreiheit zu erstellen. Weitere Informationen finden Sie auf den Seiten für iOS-Barrierefreiheit und OS X-Barrierefreiheit für andere Plattform-APIs.

Beschreiben von Ui-Elementen

Android stellt eine ContentDescription Eigenschaft bereit, die von Bildschirmlese-APIs verwendet wird, um eine barrierefreie Beschreibung des Zwecks des Steuerelements bereitzustellen.

Die Inhaltsbeschreibung kann entweder in C# oder in der AXML-Layoutdatei festgelegt werden.

C#

Die Beschreibung kann im Code auf eine beliebige Zeichenfolge (oder eine Zeichenfolgenressource) festgelegt werden:

saveButton.ContentDescription = "Save data";

AXML-Layout

Verwenden Sie in XML-Layouts das android:contentDescription -Attribut:

<ImageButton
    android:id=@+id/saveButton"
    android:src="@drawable/save_image"
    android:contentDescription="Save data" />

Verwenden von Hinweis für TextView

EditText Verwenden Sie für Und TextView -Steuerelemente für die Dateneingabe die Hint -Eigenschaft, um eine Beschreibung der erwarteten Eingabe (anstelle von ContentDescription) bereitzustellen. Wenn Text eingegeben wurde, wird der Text selbst "gelesen" anstelle des Hinweises.

C#

Legen Sie die Hint Eigenschaft im Code fest:

someText.Hint = "Enter some text"; // displays (and is "read") when control is empty

AXML-Layout

Verwenden Sie in XML-Layoutdateien das android:hint -Attribut:

<EditText
    android:id="@+id/someText"
    android:hint="Enter some text" />

Um eine Bezeichnung einem Dateneingabesteuerelement zuzuordnen, verwenden Sie die LabelFor -Eigenschaft, um

C#

Legen Sie in C# die LabelFor Eigenschaft auf die Ressourcen-ID des Steuerelements fest, das dieser Inhalt beschreibt (in der Regel wird diese Eigenschaft für eine Bezeichnung festgelegt und verweist auf ein anderes Eingabesteuerelement):

EditText edit = FindViewById<EditText> (Resource.Id.editFirstName);
TextView tv = FindViewById<TextView> (Resource.Id.labelFirstName);
tv.LabelFor = Resource.Id.editFirstName;

AXML-Layout

Verwenden Sie in Layout-XML die android:labelFor -Eigenschaft, um auf den Bezeichner eines anderen Steuerelements zu verweisen:

<TextView
    android:id="@+id/labelFirstName"
    android:hint="Enter some text"
    android:labelFor="@+id/editFirstName" />
<EditText
    android:id="@+id/editFirstName"
    android:hint="Enter some text" />

Ankündigung für Barrierefreiheit

Verwenden Sie die AnnounceForAccessibility -Methode für ein beliebiges Ansichtssteuerelement, um Benutzern ein Ereignis oder status Änderung mitzuteilen, wenn die Barrierefreiheit aktiviert ist. Diese Methode ist für die meisten Vorgänge nicht erforderlich, bei denen der integrierte Kommentar genügend Feedback liefert, sondern sollte verwendet werden, wenn zusätzliche Informationen für den Benutzer hilfreich wären.

Der folgende Code zeigt ein einfaches Beispiel, in dem aufgerufen wird AnnounceForAccessibility:

button.Click += delegate {
  button.Text = string.Format ("{0} clicks!", count++);
  button.AnnounceForAccessibility (button.Text);
};

Ändern der Fokuseinstellungen

Die barrierefreie Navigation basiert auf Steuerelementen, die den Fokus haben, um dem Benutzer zu helfen, die verfügbaren Vorgänge zu verstehen. Android bietet eine Focusable Eigenschaft, mit der Steuerelemente als spezifisch in der Lage sind, den Fokus während der Navigation zu erhalten.

C#

Um zu verhindern, dass ein Steuerelement mit C# den Fokus gewinnt, legen Sie die Focusable -Eigenschaft auf falsefest:

label.Focusable = false;

AXML-Layout

Legen Sie in XML-Layoutdateien das Attribut fest android:focusable :

<android:focusable="false" />

Sie können die Fokusreihenfolge auch mit den nextFocusDownAttributen , nextFocusLeft, nextFocusRight, nextFocusUp steuern, die normalerweise im Layout AXML festgelegt sind. Verwenden Sie diese Attribute, um sicherzustellen, dass der Benutzer problemlos durch die Steuerelemente auf dem Bildschirm navigieren kann.

Barrierefreiheit und Lokalisierung

In den obigen Beispielen werden der Hinweis und die Inhaltsbeschreibung direkt auf den Anzeigewert festgelegt. Es empfiehlt sich, Werte in einer Strings.xml-Datei wie die folgende zu verwenden:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="enter_info">Enter some text</string>
    <string name="save_info">Save data</string>
</resources>

Die Verwendung von Text aus einer Zeichenfolgendatei wird unten in C#- und AXML-Layoutdateien gezeigt:

C#

Anstatt Zeichenfolgenliterale im Code zu verwenden, suchen Sie übersetzte Werte aus Zeichenfolgendateien mit Resources.GetText:

someText.Hint = Resources.GetText (Resource.String.enter_info);
saveButton.ContentDescription = Resources.GetText (Resource.String.save_info);

AXML

Im Layout können XML-Barrierefreiheitsattribute wie hint und contentDescription auf einen Zeichenfolgenbezeichner festgelegt werden:

<TextView
    android:id="@+id/someText"
    android:hint="@string/enter_info" />
<ImageButton
    android:id=@+id/saveButton"
    android:src="@drawable/save_image"
    android:contentDescription="@string/save_info" />

Der Vorteil des Speicherns von Text in einer separaten Datei besteht darin, dass die Datei in mehreren Sprachen übersetzt werden kann, die in Ihrer App bereitgestellt werden können. Im Leitfaden zur Android-Lokalisierung erfahren Sie, wie Sie einem Anwendungsprojekt lokalisierte Zeichenfolgendateien hinzufügen.

Testen der Barrierefreiheit

Führen Sie diese Schritte aus , um TalkBack und Explore by Touch zu aktivieren, um die Barrierefreiheit auf Android-Geräten zu testen.

Möglicherweise müssen Sie TalkBack von Google Play installieren, wenn es nicht unter Einstellungen > Barrierefreiheit angezeigt wird.