'Persistent BottomSheet Views do not get focus in Talkback mode on (Accessibility)

i have a persistent bottomsheet like bottom_sheet_persistent.xml

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/bottomSheet"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:behavior_hideable="false"
    app:behavior_peekHeight="80dp"
    app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="230dp"
        android:background="#2196F3"
        app:layout_constraintTop_toTopOf="parent" >

        <TextView
            android:text="Text in Bottom Sheet"
            android:layout_width="match_parent"
            android:textSize="24sp"
            android:layout_height="wrap_content"/>
    </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

And the activity where the bottomsheet has been used is

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

        <androidx.coordinatorlayout.widget.CoordinatorLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#E7E7E7"
            app:layout_constraintTop_toTopOf="parent">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="bottom"
                android:paddingBottom="200dp"
                app:layout_constraintTop_toTopOf="parent" >
    
                <TextView
                    android:text="Text in Activity"
                    android:textSize="24sp"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"/>
            </LinearLayout>
    
            <include
                android:id="@+id/bottomSheet"
                layout="@layout/bottom_sheet_persistent" />
        </androidx.coordinatorlayout.widget.CoordinatorLayout>
    </androidx.constraintlayout.widget.ConstraintLayout>

When I turn on the talkback of accessibility and the bottom sheet is expanded, the text in Activity (will be overlapped by the botttomsheet's textview) which is underneath the bottomsheet gets the focus. How can I get the focus which in on the bottomsheet (seems to be so obvious). I tried to make the bottomsheet clickable, but in that case, the whole bottomsheet gets the focus not the individual items.

Any help or suggestions!



Solution 1:[1]

The bottom sheet layout's parent view will be like this

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/bottomSheet"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:behavior_hideable="false"
    app:behavior_peekHeight="80dp"
    android:focusable="true"
    android:importantForAccessibility="no"
    android:clickable="true"
    app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">

Solution 2:[2]

I had the same problem and I fixed it call performAccessibilityAction() explicitly. Try this on the bottom sheet.

yourView.performAccessibilityAction(AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS,null)

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 sadat
Solution 2 Dave