name="colorAccent">@color/colorAccent
LEARNMORE .
Чтобы отключить Accessibility Scanner, перейдите в раздел
Settings . Выберите пункт
Accessibility , затем нажмите кнопку
AccessibilityScanner . Установите переключатель в неактивное
положение, чтобы выключить сканер (рис. 18.15).
Рис. 18.14. Рекомендации по специальным
возможностям CheckBox
Рис. 18.15. Выключение сканера
Accessibility Scanner
Упражнение. Улучшение списка На экране со списком преступлений TalkBack читает описание
и дату каждого элемента. Однако диктор не сообщает, было
преступление раскрыто или нет. Чтобы устранить этот
недостаток, назначьте описание контента значку с
изображением наручников.
Сводка получается довольно длинной (с учетом формата
даты), а статус раскрытия преступления зачитывается в самом
конце или вообще не зачитывается, если преступление не
раскрыто. Чтобы задание стало еще более интересным, вместо
считывания обоих элементов
TextView
и описания
содержимого значка (если он присутствует) через TalkBack,
добавьте динамическое описание в каждую строку утилизатора
(recycler view).
Описание должно содержать сводку данных, выводимых в
одной строке.
Упражнение. Предоставление контекста для ввода данных Кнопкам даты и выбора подозреваемого присущ тот же
недостаток, что и исходному текстовому полю с описанием: в
приложении нет никаких явных признаков того, для чего
нужна кнопка с датой (независимо от того, используется
функция TalkBack или нет). Аналогичным образом после
выбора контакта в качестве подозреваемого пользователь не
получает никакой информации о том, что представляет собой
кнопка. Возможно, пользователь и так догадается о
предназначении кнопок и текста на этих кнопках, но стоит ли
на это надеяться?
В этом проявляется одна из тонкостей проектирования
пользовательских интерфейсов. Вы (или ваша дизайн-группа)
определяете, какие решения будут наиболее логичными для
вашего приложения, чтобы выдержать баланс между простотой
интерфейса и простотой взаимодействий.
Измените реализацию экрана с подробной информацией,
чтобы пользователь не терял смысловой контекст выбранных
им данных. Проблема может решаться простым добавлением
надписей ко всем полям. Для этого можно было бы добавить
метку
TextView
к каждой кнопке. Затем мы инструктируем
TalkBack, что
TextView
— это метка для кнопки
Button
,
используя атрибут
android:labelFor
.
android:id="@+id/crime_date_label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Date"
android:labelFor="@+id/crime_date"/>
android:id="@+id/crime_date"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:text="Wed Nov 14 11:56 EST 2018"/>
Атрибут
android:labelFor
сообщает TalkBack, что
TextView
служит меткой для виджета, указанного в
идентификаторе.
labelFor
определяется в классе
View
,
поэтому вы можете сделать любой элемент меткой для любого
другого. Обратите внимание, что здесь вы должны
использовать
синтаксис@+id
, потому что вы ссылаетесь на
идентификатор, который не был определен в тот момент в
файле. Теперь вы можете удалить
+
из строки
android:id="@+id/crime_title"
в определении
EditText
,
но в этом нет необходимости.