Ułatwienia dostępu w systemie Android

Na tej stronie opisano sposób używania interfejsów API ułatwień dostępu systemu Android do tworzenia aplikacji zgodnie z listą kontrolną ułatwień dostępu. Zapoznaj się z stronami ułatwień dostępu systemu iOS i ułatwień dostępu systemu OS X dla innych interfejsów API platformy.

Opisywanie elementów interfejsu użytkownika

System Android udostępnia właściwość używaną ContentDescription przez interfejsy API odczytu ekranu w celu zapewnienia dostępnego opisu celu kontrolki.

Opis zawartości można ustawić w języku C# lub w pliku układu AXML.

C#

Opis można ustawić w kodzie na dowolny ciąg (lub zasób ciągu):

saveButton.ContentDescription = "Save data";

Układ AXML

W układach XML użyj atrybutu android:contentDescription :

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

Używanie wskazówki dla kontrolki TextView

W przypadku EditText danych wejściowych i TextView sterujących danymi użyj Hint właściwości , aby podać opis oczekiwanych danych wejściowych ContentDescription(zamiast ). Po wprowadzeniu tekstu sam tekst będzie "odczytywany" zamiast wskazówki.

C#

Hint Ustaw właściwość w kodzie:

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

Układ AXML

W plikach układu XML użyj atrybutu android:hint :

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

Aby skojarzyć etykietę z kontrolką wprowadzania danych, użyj LabelFor właściwości do

C#

W języku C#ustaw LabelFor właściwość na identyfikator zasobu kontrolki, którą opisuje ta zawartość (zazwyczaj ta właściwość jest ustawiona na etykiecie i odwołuje się do innej kontrolki wejściowej):

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

Układ AXML

W układzie XML użyj android:labelFor właściwości , aby odwołać się do identyfikatora innej kontrolki:

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

Ogłaszanie ułatwień dostępu

AnnounceForAccessibility Użyj metody w dowolnej kontrolce widoku, aby przekazać użytkownikom zmianę zdarzenia lub stanu po włączeniu ułatwień dostępu. Ta metoda nie jest wymagana w przypadku większości operacji, w których wbudowana narracja zapewnia wystarczającą opinię, ale powinna być używana, gdy dodatkowe informacje będą przydatne dla użytkownika.

Poniższy kod przedstawia prosty przykład wywołania metody AnnounceForAccessibility:

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

Zmienianie Ustawienia fokusu

Dostępna nawigacja polega na kontrolkach, które koncentrują się na pomaganiu użytkownikowi w zrozumieniu, jakie operacje są dostępne. System Android udostępnia Focusable właściwość, która może oznaczać kontrolki jako w szczególności możliwość odbierania fokusu podczas nawigacji.

C#

Aby zapobiec uzyskaniu fokusu Focusable kontrolki za pomocą języka C#, ustaw właściwość na wartość false:

label.Focusable = false;

Układ AXML

W pliku XML układu ustaw android:focusable atrybut:

<android:focusable="false" />

Można również kontrolować kolejność fokusu za nextFocusDownpomocą atrybutów , , nextFocusLeftnextFocusRightnextFocusUp , zwykle ustawianych w układzie AXML. Użyj tych atrybutów, aby upewnić się, że użytkownik może łatwo przechodzić przez kontrolki na ekranie.

Ułatwienia dostępu i lokalizacja

W powyższych przykładach opis wskazówki i zawartości są ustawiane bezpośrednio na wartość wyświetlaną. Preferowane jest użycie wartości w pliku Strings.xml , na przykład:

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

Użycie tekstu z pliku ciągów jest pokazane poniżej w plikach układu C# i AXML:

C#

Zamiast używać literałów ciągów w kodzie, wyszukaj przetłumaczone wartości z plików ciągów za pomocą polecenia Resources.GetText:

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

AXML

W układzie atrybuty ułatwień dostępu XML, takie jak hint i contentDescription można ustawić na identyfikator ciągu:

<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" />

Zaletą przechowywania tekstu w osobnym pliku jest wiele tłumaczeń językowych pliku, które można udostępnić w aplikacji. Zapoznaj się z przewodnikiem lokalizacji systemu Android, aby dowiedzieć się, jak dodać zlokalizowane pliki ciągów do projektu aplikacji.

Testowanie ułatwień dostępu

Wykonaj następujące kroki , aby włączyć funkcję TalkBack i Explore by Touch, aby przetestować ułatwienia dostępu na urządzeniach z systemem Android.

Może być konieczne zainstalowanie aplikacji TalkBack ze sklepu Google Play, jeśli nie jest ona wyświetlana w Ustawienia > Ułatwienia dostępu.