Android accessibility: TalkBack reading order for a custom view and a TextView

159 views Asked by At

I'm trying to improve the a11y in our app and we have the following piece of XML:

    <myapp.custom.CurrencyTextView
        android:id="@+id/tvBalance"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="@dimen/s16"
        android:layout_marginTop="@dimen/s16"
        android:paddingBottom="@dimen/s2"
        app:intPartTextSize="@dimen/num01FontSize"
        app:layout_constraintBottom_toBottomOf="@id/tvAvailableToSpend"
        app:layout_constraintStart_toStartOf="parent"
        app:symbolTextSize="@dimen/caption01FontSize"
        app:textColor="@color/accountAmount01" />

    <myapp.custom.NoPaddingTextView
        android:id="@+id/tvCurrentBalanceTitle"
        style="@style/caption01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/s4"
        android:accessibilityTraversalBefore="@id/tvBalance"
        android:labelFor="@id/tvBalance"
        android:text="@string/home_balance_spent"
        android:textColor="@color/accountAmount02"
        app:layout_constraintStart_toStartOf="@+id/tvBalance"
        app:layout_constraintTop_toBottomOf="@+id/tvBalance" />

what I'm trying to do is to have TalkBack first read the second view tvCurrentBalanceTitle and then the first tvBalance but it's impossible in XML (easy to do in Compose though with the Modifier.semantics and traversalGroup).

I have tried with and without labelFor and using accessibilityTraversalBefore and after, but I can't make it work.

Am I doing something wrong with the XML?

0

There are 0 answers