Я пытаюсь сделать 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. Однако, когда пользователь щелкает любой из дочерних элементов, ответа не происходит.
Вы можете попробовать переопределить метод onInterceptTouchEvent
LinearLayout. Когда touchEvent находится в зоне заполнения, перехватить события. В противном случае распространите события среди детей.
Для получения дополнительной информации об обработке событий касания Android, пожалуйста, прочтите эта статья.