2016-06-13 2 views
1

Я пытаюсь сделать работу TalkBack для моего Android приложения, в моем макете приложения У меня есть список CardViews внутри RecyclerView, каждый CardView содержит несколько TextViews и несколько кнопок: App layout imageКак связать кнопки с родительским представлением и объявить пользователю TalkBack?

Когда я перехожу на Android TalkBack, и нажмите на CardView, TalkBack объявляет все текстовые элементы, но не объявляет ни одной кнопки. Если я продолжу прокрутку вправо, кнопки будут фокусироваться один за другим. Не уверен, что мое понимание правильное, но похоже, что TalkBack обрабатывает TextViews и кнопки по-разному, потому что кнопки являются настраиваемыми.

Есть ли способ заставить TalkBack объявить весь контент в CardView (TextViews and Buttons) и держать кнопки фокусными (так что я все еще смогу настроить фокус на кнопки путем прокрутки)?

PS:

Одно из решений, которые работали, чтобы непосредственно установить описание контента на CardView, и сделать описание контента содержит все содержание TextViews и кнопки, но это своего рода Hacky, так что я пытаюсь найти лучшее решение здесь.

Любая помощь приветствуется. Благодаря!

+0

Кнопка действует. Если вы хотите, чтобы ваши пользователи могли выполнять действия каждой кнопки, их нужно отдельно настраивать. Если они не действуют, они не должны быть кнопками. – ChrisCM

+0

Я предполагаю, что это предполагаемое поведение TalkBack. Я просто позволю. Благодарю. – yxt423

ответ

0

Кнопка действует. Если вы хотите, чтобы ваши пользователи могли выполнять действия каждой кнопки, их нужно отдельно настраивать. Если они не действуют, они не должны быть кнопками.

0

Ожидаемое поведение, и ваше решение является правильным.

Для ViewGroups без явного описания содержимого TalkBack попытается вывести одно из детей, объединив описание содержимого (или текстовое значение, если вид выходит из TextView) всех детей.

Поскольку сами кнопки являются действующими (с возможностью фокусировки/кликабельными), они не включены в описание предполагаемого содержимого.

Установка явного описания содержимого на карточке - правильный подход, чтобы ваша цель заключалась в описании информации, которую представляет карта. IMO, он не должен содержать описание кнопок, поскольку они будут отдельно настраиваться и будут прочитаны вслух, когда пользователь сосредоточится на них.


Лучший подход ИМО, чтобы скрыть кнопки, если TalkBack включен, и представить карты в качестве лиц, которые содержат одно действие и один, явно-набор описания содержания.

Важно не уменьшать функциональность пользователей TalkBack - все цели пользователя, которые были достижимы, должны быть достижимы; нет требования, что цели должны быть достигнуты одинаковым образом всеми пользователями. Таким образом, в этом случае вы можете сделать основное действие карты как действие click и предложить действия с помощью кнопок в другом месте приложения.

Один образец, который хорошо работает, отображает диалог при щелчке, и в нем содержатся все действия.Это имеет несколько преимуществ:

  • карта является единичное действие так навигации между картами является одним прикосновением только
  • диалог по умолчанию доступен по умолчанию - без дополнительной работы не требуется

I wrote a blog post объясняя, как вы можете это сделать (и без) библиотеки, которую я помогал писать. Раздел под «диалоговым окном действий» является соответствующим битом.

Смежные вопросы