Сделано, что LinearLayout кликабелен, но получает ответ только по его заполнению, а не по дочерним представлениям - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь сделать 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. Однако, когда пользователь нажимает на какой-либо из дочерних элементов, отклик не получается.

1 Ответ

0 голосов
/ 02 мая 2018

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

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

...