2

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

Дело в том, что фокус речевого сообщения установлен на элементы нижнего фрагмента.

Знаете ли вы, есть ли способ установить фокус на обратной стороне фрагмента набора? Я просто хочу, чтобы «отключить» фрагмент внизу, чтобы получить фокус

Спасибо,

ответ

4

ОБНОВЛЕНИЕ

Я выяснил решение. вы можете отключить доступность первого фрагмента до выполнения транзакции фрагмента.

rootView = inflater.inflate(R.layout.first_fragment, null, false); 

rootView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS); 

и теперь вы совершаете транзакцию фрагмента. Второй фрагмент не будет течь фокус на первый фрагмент.

Не забудьте включить доступность первого фрагмента, если вы вернетесь к первому фрагменту.

if(rootView != null) { 
    rootView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); 
} 
-1

Посмотрите на метод View. sendAccessibilityEvent (AccessibilityEvent.TYPE_VIEW_FOCUSED). sendAccessibilityEvent изменения фокуса от Talkback. Я мало знаю о Talkback, PLS читал ссылку на SO @When using TalkBack, what is the preferred way to alert the user when the contents of a TextView have changed?.

Успехов ...

+0

Форсирование фокуса доступности - плохая идея. Ответ: это нарушение доступности в WCag 2.0. B: что, если пользователь скачет обратно? Они все равно будут сосредоточены на тех вещах, которые он не хочет сосредоточить. – ChrisCM

-1

Ваша проблема не «посылать» фокус на нужное место. Форсирование фокуса вокруг разных мест - это, как правило, плохая идея и недоступна. Ваша проблема в том, что у вас есть элементы на экране, которые не видны, но фокусируются на TalkBack. Вы хотите скрыть эти элементы от TalkBack. Фактически, вы, вероятно, хотите полностью их удалить, но давайте предположим, что они должны быть на экране. Что вы можете сделать, это скрыть их от службы доступности:

rootViewOfFragment.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS); 

Это скроет эти виды из TalkBack. Это лучшее решение, чем фокусирование внимания на конкретном элементе, поскольку это обычно является нарушением доступности в WCag 2.0. Хотя, если элементы на экране не полностью скрыты вашим «верхним» фрагментом, это также является нарушением, и вы должны просто оставить вещи.

+0

Это не работает для меня. Кто-нибудь придумал решение для этого? –

+0

Пробовал это тоже и не работает. Я буду продолжать пытаться исправить это и посмотреть, смогу ли я найти что-то, что работает. – SamIAmHarris

0

Вы используете fragmentTransaction.add?

Если это так, вы можете использовать фрагментTransaction.replace!

Функция добавления также вызвала проблемы с щелчком на приведенных ниже фрагментах.

Так что, пожалуйста, используйте замену.

+0

Это не дает ответа на вопрос. Когда у вас будет достаточно [репутации] (https: // stackoverflow.com/help/whats-Reputation), вы сможете [прокомментировать любое сообщение] (https://stackoverflow.com/help/privileges/comment); вместо этого [предоставить ответы, которые не требуют разъяснений у аськи) (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- я-делать-вместо этого). - [Из обзора] (/ review/low-quality-posts/18405601) – Mamun

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