Разрешить фокусировку TextView при отображении его поверх представления с параметром contentDescription, для которого TalkBack включен - PullRequest
0 голосов
/ 16 апреля 2020

Предположим, у меня есть такой макет:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <View
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginLeft="50dp"
            android:contentDescription="empty view content description"
            android:layout_marginRight="50dp" />

    </RelativeLayout>

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="24dp"
            android:layout_marginLeft="24dp"
            android:layout_marginTop="24dp"
            android:text="Hello World!"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginTop="24dp"
            android:text="this is a second text view"
            app:layout_constraintStart_toEndOf="@+id/textView"
            app:layout_constraintTop_toTopOf="parent" />


    </androidx.constraintlayout.widget.ConstraintLayout>


</RelativeLayout>

Макет отображается так, как показано на рисунке ниже:

The problematic layout

Проблема в том, что: как пользователь, я хочу иметь возможность фокусировать элементы TextView, нажимая на них с включенным TalkBack.

Проблема заключается в том, что Когда я нажимаю на TextViews, которые отображаются поверх элемента View, для которого установлено значение contentDescription, служба TalkBack не позволяет мне выбирать тексты, но перенаправляет фокус на представление под ними. Однако, когда я касаюсь части textView, которая находится за пределами фонового представления, она фокусируется.

Как я могу сделать эти TextViews всегда выбираемыми в TalkBack, не отмечая их как нажимаемые? Установка свойства clickable заставляет TalkBack объявлять их подсказкой «двойное касание для активации», что вводит в заблуждение, поскольку за этими элементами управления нет никаких действий.

...