Специальные возможности в 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 связывает входные поля с метками
Чтобы связать метку с элементом управления входными данными 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" />
Вы также можете управлять порядком nextFocusDown
nextFocusLeft
фокусировки с помощью атрибутов , nextFocusRight
nextFocusUp
атрибутов, обычно заданных в макете 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, если он не отображается в Параметры > специальных возможностей.