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" />
LabelFor verknüpft Eingabefelder mit Bezeichnungen
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 false
fest:
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 nextFocusDown
Attributen , 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.