Android talkback; как отключить объявление местоположения и количества ячеек?

#android #accessibility #talkback

Вопрос:

Когда у меня есть представление переработчика с 12 элементами, например, когда фокус доступности переходит на ячейку № 3, talkback объявляет: «Дважды нажмите, чтобы активировать. Пункт 3 из 12».

Я хочу сохранить действие, но запретить ему объявлять позицию товара и количество товаров. Как я могу это сделать? Я попытался назначить делегата для представления переработчика, но не уверен, что переопределить в делегате.

Как я могу это сделать?

Ответ №1:

Эта функция не должна быть отключена: она позволяет людям, использующим Talkback, знать, что они находятся в списке, какова длина списка, какой элемент в данный момент сфокусирован (есть ли еще элементы выше/ниже).

Комментарии:

1. Его можно отключить, потому что иногда вы хотите реализовать свои собственные сообщения, которые сообщают пользователю, что они находятся в списке и что элементы каким-то образом уникальны, например, в таблице уникальных идентификаторов не нужно объявлять положение ячейки. Взгляните сюда: developer.android.com/guide/topics/ui/accessibility/. … Однако ваша точка зрения справедлива. Я просто говорю, что это должно быть и может быть отменено, см. Мой ответ 🙂

2. Убедитесь, что список по-прежнему можно прокручивать с помощью Talkback после этого изменения: установка значения «Информация о коллекции» на null удалит эти объявления, но также нарушит другое поведение, например, автоматическую прокрутку до элементов, которых нет на экране, когда пользователь достигает их.

3. В этом вы правы. Это, безусловно, препятствует другому поведению, связанному с коллекцией. Я исследовал это только в качестве эксперимента. Должен быть менее разрушительный подход. Возможно, некоторые свойства объекта CollectionInfo?

4. Я никогда не мог понять это, не нарушая другие функции :/

Ответ №2:

Так что я все понял. У AccessibilityNodeInfo есть вызываемый метод SetCollectionInfo() . CollectionInfo имеет такие свойства, как rowCont и columnCount. Я просто установил информацию в нуль.

Обратите внимание, что ниже приведен xamarin:

     private class TabLayoutTabAccessibilityDelegate: View.AccessibilityDelegate
    {
        public override void OnInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info)
        {
            base.OnInitializeAccessibilityNodeInfo(host, info);
            info.SetCollectionInfo(null);
        }
    }
 

Комментарии:

1. Это не помогло BottomNavigationView . Прочитав мое собственное описание контента, он добавляет: «вкладка пример1 одна из четырех».