Я в настоящее время изо всех сил пытаюсь создать PagerTabStrip
с более TalkBack
вокализации. Контекст:PagerTabStrip TalkBack accessibility
- Я хочу, чтобы добавить «Tab [имя вкладки] не выбран, нажмите дважды, чтобы выбрать» на левой и правой вкладки и «Tab [Закладка имя] выбрано» к центру один для
TalkBack
пользователя , - Я также хочу добавить вокализацию при нажатии на вкладку, чтобы предупредить пользователя об изменении его содержимого и сообщить
TalkBack
, чтобы сфокусировать вкладку центра.
я уже удался частично сделать это путем переписывания всех необходимых классов (например: PagerTitleStrip
, ViewPager
, FragmentPagerAdapter
) и добавив нужное contentDescription
непосредственно на вкладке TextView
. Он работает довольно хорошо, но я не удовлетворен. Техническое обслуживание этих классов необходимо обновить для каждой новой версии основных классов Android (или я сохраню старый дизайн), и я нахожу грязным, чтобы копировать все содержимое класса каждый раз (и как насчет следующих разработчиков?). Итак, я попробовал еще approches:
- Использование
AccessibilityEvent
в подклассеPagerTabStrip
дать больше контекста для вокализации. Это не сработало, потому чтоgetText()
иgetContentDescription
методов вAccessibilityEvent
не используются для вокализации. - Работайте над
AccessibilityNodeInfo
отViewPager
, чтобы узнать, смогу ли я это обработать. Но я не определяю источник вокализации (это вкладки или контент), а также то, что должно быть изменено вAccessiblityNodeInfo
для изменения вокализации.
Итак, мне интересно, можно или нет использовать подкласс для решения моей проблемы или если у меня нет выбора, кроме как копировать основные классы. Заранее благодарим за помощь.
Thansk много, это сработало! Я использовал свой OnPageChangeListener, чтобы выбрать текущую вкладку с Talkback, а не последнюю, которая была нажата. Я знаю, что пользователи Android TalkBack привыкли к поведению без указания того, что можно щелкнуть, я думаю, я буду ждать пользовательских тестов ;-) – user1980386