Представьте, что у вас есть LinearLayout
внутри RelativeLayout
, который содержит 3 TextViews
с artist, 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>
Когда вы активируете TalkbackReader и нажимаете TextView
в LinearLayout
, TalkbackReader будет читать, например, "Artist", "Song" ИЛИ "Album".
Но вы можете поместить эти первые 3 TextViews
в фокус-группу, используя:
<LinearLayout
android:focusable="true
...
Теперь TalkbackReader будет читать "Artist Song Album".
2 unrelated TextViews
все еще был бы сам по себе и не читался, и я хочу добиться такого поведения.
(См. пример кода Google для)
Сейчас я пытаюсь воссоздать это поведение с помощью ConstrainLayout
, но не понимаю, как.
<ConstraintLayout>
<TextView artist/>
<TextView song/>
<TextView album/>
<TextView unrelated_textview1/>
<TextView unrelated_textview2/>
</ConstraintLayout>
Помещение виджетов в "группу" не работает:
<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"
/>
Так как я могу заново создать фокус-группы для доступности в ConstrainLayout
?
[EDIT]: Похоже, что единственный способ создать решение - использовать "focusable = true" на внешнем ConstraintLayout и/или "focusable = false" на самих представлениях. Это имеет ряд недостатков, которые следует учитывать при работе с клавиатурой/переключателями:
https://github.com/googlecodelabs/android-accessibility/issues/4