LinearLayout стал интерактивным, но получать ответ только на его отступах, а не на дочерних представлениях

Я пытаюсь сделать LinearLayout интерактивным, и этот макет содержит два дочерних представления: TextView и View, который образует подчеркивание под TextView. Я пробовал много решений, но не помогло.

Проблема в том, что интерактивный LinearLayout реагирует только тогда, когда пользователь нажимает на его заполнение, а не когда пользователь нажимает на дочерние представления.

Я хочу, чтобы весь линейный макет воспроизводил нажатое состояние, когда пользователь щелкает в любом месте LinearLayout и его дочерних представлениях. Вот соответствующая часть моего файла макета (я попытался настроить дочерние представления, чтобы они были интерактивными, но это сводит на нет возможность щелчка по всей области):

...
        <LinearLayout
            android:id = "@+id/routineday_page_set1_weight_layout"
            android:layout_width = "match_parent"
            android:layout_height = "match_parent"
            android:padding = "5dp"
            android:orientation = "vertical"
            android:background = "?android:attr/selectableItemBackground"
            android:clickable = "true"
            android:focusable = "true">

            <TextView
                android:id = "@+id/routineday_page_set1_weight_textview"
                style = "@style/TextAppearance.AppCompat.Widget.Button.Borderless.Colored"
                android:textAllCaps = "false"
                android:layout_width = "match_parent"
                android:layout_height = "wrap_content"
                android:textColor = "@drawable/set_weight_text_selector"
                android:textSize = "16sp"
                tools:text = "260lbs"
                android:textAlignment = "center"
                android:clickable = "false"
                android:duplicateParentState = "true"/>

            <View
                android:id = "@+id/routineday_page_set1_weight_underline"
                android:layout_width = "match_parent"
                android:layout_height = "1dp"
                android:background = "@drawable/set_weight_underline"
                android:clickable = "false"
                android:duplicateParentState = "true"/>
        </LinearLayout>
    </LinearLayout>
...

Любая помощь приветствуется.

Обновлено: я должен добавить, что весь регион в настоящее время настроен на кликабельность, и все дочерние представления отвечают, когда пользователь нажимает на заполнение LinearLayout. Однако, когда пользователь щелкает любой из дочерних элементов, ответа не происходит.

0
0
46
1

Ответы 1

Вы можете попробовать переопределить метод onInterceptTouchEvent LinearLayout. Когда touchEvent находится в зоне заполнения, перехватить события. В противном случае распространите события среди детей.

Для получения дополнительной информации об обработке событий касания Android, пожалуйста, прочтите эта статья.

Другие вопросы по теме