Cómo evitar TalkBack de leer el fragmento despedido
Estoy desarrollando una aplicación sencilla que está estructurada en Actividades y Fragmentos, uno de los requisitos es para hacerlo accesible, así que hice todas las decripciones de contenido, navegación, enfoque, etc.
Y funciona muy bien, excepto con fragmentos, si hay una actividad que carga un fragmento de la charla lee su contenido, entonces el usuario hace clic en algo y un fragmento de detalle que podría agregarse en la parte superior de la pila.
- Cómo cambiar Android Talkback en caso de nombre de la aplicación
- Android: evita que TalkBack anuncie el título de TextView en voz alta
- Android: establece el enfoque de accesibilidad de TalkBack a una vista específica
- Android: evita que TalkBack anuncie el título de TextView en voz alta
- Acceso total al tacto a pesar de TalkBack / lector de pantalla
FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); audios = AudiosListFragment.newInstance(params); ft.add(R.id.audios_fragment_holder, audios); ft.commit();
Si el usuario sigue navegando en talkback todavía recuerda la posición de cada elemento del fragmento que falta.
¿Hay alguna forma de borrar la lista de accesibilidad de eventos y obligarla a volver a recibirla? Administrador de accesibilidad no parece tener ningún método para eso.
AccessibilityManager manager = (AccessibilityManager) getActivity().getSystemService(Context.ACCESSIBILITY_SERVICE); manager.getAccessibilityServiceList();
– EDITADO – cosas que he probado y no funcionó.
Enviar un evento de la creación de vista en el fragmento.
AccessibilityEvent event = AccessibilityEvent.obtain(AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED); AccessibilityDelegate delegate = new AccessibilityDelegate(); v.setAccessibilityDelegate(delegate); delegate.dispatchPopulateAccessibilityEvent(container, event);
Interrumpir todos los textos pendientes sobre el resurgimiento del fragmento.
AccessibilityManager mgr = (AccessibilityManager) getActivity().getSystemService(Context.ACCESSIBILITY_SERVICE); mgr.interrupt();
Solicitar la vista del decorador para registrar un evento de window_content_change o window_state_change.
getWindow().getDecorView() .sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
– EDITADO – Hizo una jerarquía de DumpView y no hay rastro del fragmento despedido, pero los alambiques de la charla lo navegan: (
Gracias, espero que alguien pueda arrojar algo de luz sobre este tema 🙂
Saludos.
- Accesibilidad de Android: ¿Cómo cambio el texto leído en voz alta para una Vista de Edición de Texto
- ¿Hay una manera estándar de sugerir que un número debe ser leído un carácter a la vez?
- ¿Por qué nextFocusDown no funciona con la navegación de TalkBack?
- Android: ¿Cómo forzar Explore-By-Touch / Talkback para repetir la ContentDescription de la vista actual en AccessibilityFocus?
- Prueba de accesibilidad en dispositivos emulados (Marshmallow)
- Android - Evitar que TalkBack lea la aplicación Nombre y orientación actual
- Prueba de accesibilidad (talkback) para la aplicación
- Cómo agregar contentDescription a ListPreference?
La única manera que encontré así que los fragmentos abajo no consiguen leídos está substituyendo los en la transacción del fragmento, que es una causa del inconveniente usted suelta el estado de ese fragmento …
FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); BookDetailFragment book = BookDetailFragment.newInstance(id); ft.replace(R.id.books_fragment_holder, book); ft.addToBackStack(BookDetailFragment.TAG); ft.commit();
Im que va a seguir buscando en cómo hacer esto correctamente.
- Cómo utilizar AccessibilityService para establecer texto en un EditText dentro de un navegador
- Android BLE ACTION_ACL_CONNECTED no se llama para dispositivos emparejados