В настоящее время я добавляю специальные возможности в качестве новой функции в свое приложение. Моя цель состоит в том, чтобы пользователь мог перемещаться по нему с помощью интегрированной службы TalkBack под Android.
Все работает хорошо, так как я устанавливаю описание содержимого для элементов, которые находятся внутри моего макета активности, т. Е.
<View
style="@style/custom.style"
android:contentDescription="@string/my_string_value"/>
Таким образом, каждый раз, когда отображается моя активность, TalkBack считывает значение описания контента.
У меня не было такого же успеха, используя только одно действие, которое накладывает на него несколько фрагментов. Поэтому, если я попытаюсь установить описание содержимого для любого элемента внутри макета фрагмента, оно не будет прочитано (автоматически), пока не будет обнаружено событие касания (я ожидаю, что TalkBack сделает это автоматически, точно так же, как представления в макете активности)
Чтобы получить результат, который я ожидаю, я это внутри класса фрагмента:
public abstract class myFragment extends Fragment {
...
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
...
myCustomView = (LinearLayout) rootView.findViewById(R.id.duende);
myCustomView.requestFocus();
}
}
Пока это не увенчалось успехом, то же самое, что и настройка доступности при изменении содержимого.
getWindow().getDecorView().sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED);
Кто-нибудь сталкивался с подобной проблемой?