Как заставить TalkBack читать события специальных возможностей Android, не прерывая их - PullRequest
0 голосов
/ 22 января 2019

У меня есть представление фильтров, которое после увольнения я хотел бы сделать 2 вещи со специальными возможностями:

  • объявить "$ listSize items in list", так как применение фильтров изменит размер списка
  • установить фокус на кнопку «Добавить фильтры»

Я попробовал следующее:

filtersButton.announceForAccessibility("$listSize items in list")
filtersButton.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)

Я ожидал, что TalkBack будет читать по порядку:

  • "20 элементов в списке"
  • "Кнопка фильтров"

Однако обычно она пропускает первое чтение и читает текст только на filtersButton.Иногда он будет читать только часть первого перед переходом ко второму.

Как заставить TalkBack считывать оба события доступности?

1 Ответ

0 голосов
/ 12 мая 2019

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

У вас есть вид на экране, который показывает общее количество предметов? Если у вас нет визуальной подсказки о количестве предметов, вы не должны объявлять об этом в TalkBack. Либо информация важна, и вы должны представлять ее визуально всем пользователям, либо информация не так важна для отображения на экране и не должна объявляться в программе чтения с экрана.

Если оно отображается на экране, вы можете использовать AccessibilityLiveRegion, чтобы позволить считывателю объявить об измененном значении, и удерживать фокус на кнопке Add filters. Другим подходом было бы просто установить первый фокус на представление, показывающее счетчик списка элементов, и позволить пользователю перейти к следующей кнопке.

ViewCompat.setAccessibilityLiveRegion(itemCountTextView, ACCESSIBILITY_LIVE_REGION_POLITE)
...