¿Cómo crear grupos focales accesibles en ConstraintLayout?
Imagina que tienes unLinearLayo,ut
dentro de unaRelativeLayout
que contiene 3TextViews
conartist, song and album
:
<RelativeLayout
...
<LinearLayout
android:id="@id/text_view_container"
android:layout_width="warp_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@id/artist"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Artist"/>
<TextView
android:id="@id/song"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Song"/>
<TextView
android:id="@id/album"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="album"/>
</LinearLayout>
<TextView
android:id="@id/unrelated_textview1/>
<TextView
android:id="@id/unrelated_textview2/>
...
</RelativeLayout>
Cuando active TalkbackReader y haga clic en unTextView
en elLinearLayout
, el TalkbackReader leerá "Artista", "Canción" O "Álbum", por ejemplo.
Pero podrías poner esos primeros 3TextViews
en un grupo de enfoque, usando:
<LinearLayout
android:focusable="true
...
Ahora el TalkbackReader leería "Artist Song Album".
El 2unrelated TextViews
todavía estaría solo y no leería, que es el comportamiento que quiero lograr.
(VerGoogle codelabs ejemplo para referencia
Ahora estoy intentando recrear este comportamiento con laConstrainLayout
pero no veo cómo.
<ConstraintLayout>
<TextView artist/>
<TextView song/>
<TextView album/>
<TextView unrelated_textview1/>
<TextView unrelated_textview2/>
</ConstraintLayout>
Poner widgets en un "grupo" no parece funcionar:
<android.support.constraint.Group
android:id="@+id/group"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="true"
android:importantForAccessibility="yes"
app:constraint_referenced_ids="artist,song,album"
/>
Entonces, ¿cómo puedo volver a crear grupos de enfoque para la accesibilidad en elConstrainLayout
?
[EDITAR] Parece ser el caso, que la única forma de crear una solución es usar "focusable = true" en el ConstraintLayout externo y / o "focusable = false" en las vistas mismas. Esto tiene algunos inconvenientes que se deben tener en cuenta al tratar con la navegación del teclado / cajas de interruptores:
https: //github.com/googlecodelabs/android-accessibility/issues/