Поделиться через


Специальные возможности в Android

На этой странице описывается, как использовать API специальных возможностей Android для создания приложений в соответствии с списком специальных возможностей проверка. Дополнительные сведения см. на страницах специальных возможностей iOS и OS X для других API платформы.

Описание элементов пользовательского интерфейса

Android предоставляет ContentDescription свойство, которое используется API чтения с экрана для предоставления доступного описания назначения элемента управления.

Описание содержимого можно задать в C# или в файле макета AXML.

C#

Описание можно задать в коде для любой строки (или строкового ресурса):

saveButton.ContentDescription = "Save data";

Макет AXML

В xml-макетах используйте android:contentDescription атрибут:

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

Использование подсказки для TextView

Для EditText ввода данных и TextView элементов управления используйте Hint это свойство для предоставления описания ожидаемых входных данных (а не ContentDescription). При вводе текста сам текст будет "прочитан" вместо указания.

C#

Задайте свойство в коде Hint :

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

Макет AXML

В XML-файлах макета android:hint используйте атрибут:

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

Чтобы связать метку с элементом управления входными данными LabelFor , используйте свойство для

C#

В C#задайте LabelFor для свойства идентификатор ресурса элемента управления, описываемого этим содержимым (обычно это свойство задано на метке и ссылается на другой элемент управления входными данными):

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

Макет AXML

В XML макета свойство используется android:labelFor для ссылки на идентификатор другого элемента управления:

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

Объявление о специальных возможностях

AnnounceForAccessibility Используйте метод в любом элементе управления представления для обмена данными о событии или изменении состояния пользователям при включении специальных возможностей. Этот метод не требуется для большинства операций, где встроенный диктор предоставляет достаточный отзыв, но следует использовать, где дополнительная информация будет полезна для пользователя.

В приведенном ниже коде показан простой пример вызова AnnounceForAccessibility:

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

Изменение фокуса Параметры

Навигация со специальными возможностями зависит от элементов управления, которые помогают пользователю понять, какие операции доступны. Android предоставляет Focusable свойство, которое может тегировать элементы управления как специально способные получать фокус во время навигации.

C#

Чтобы предотвратить получение фокуса элемента управления с помощью C#, задайте Focusable для свойства falseзначение :

label.Focusable = false;

Макет AXML

В XML-файлах макета android:focusable задайте атрибут:

<android:focusable="false" />

Вы также можете управлять порядком nextFocusDownnextFocusLeftфокусировки с помощью атрибутов , nextFocusRightnextFocusUp атрибутов, обычно заданных в макете AXML. Используйте эти атрибуты, чтобы гарантировать, что пользователь может легко перемещаться по элементам управления на экране.

Специальные возможности и локализация

В примерах выше указания и описания содержимого задаются непосредственно для отображаемого значения. Предпочтительнее использовать значения в файле Strings.xml , например в следующем:

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

Использование текста из файла строк показано ниже в файлах макета C# и AXML:

C#

Вместо использования строковых литералов в коде просмотрите переведенные значения из файлов строк с помощью Resources.GetText:

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

AXML

В атрибутах специальных возможностей xml макета, таких как hint и contentDescription может быть задано значение строкового идентификатора:

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

Преимущество хранения текста в отдельном файле — несколько переводов на язык файла, которые можно предоставить в приложении. Ознакомьтесь с руководством по локализации Android, чтобы узнать, как добавить локализованные строковые файлы в проект приложения.

Тестирование специальных возможностей

Выполните следующие действия , чтобы включить TalkBack и Обзор с помощью Touch, чтобы протестировать специальные возможности на устройствах Android.

Возможно, вам потребуется установить TalkBack из Google Play, если он не отображается в Параметры > специальных возможностей.