Подтвердить что ты не робот

Сделайте линейную компоновку, выбранную как элемент списка в представлении списка (Android)

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

4b9b3361

Ответ 1

Я предпочитаю более простой способ:

<LinearLayout android:orientation="vertical"
              android:id="@+id/layoutIdentifier"
              android:clickable="true"
              android:background="?android:attr/selectableItemBackground"

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

    <!-- put views here -->
</LinearLayout>

Вы не можете изменить фоновый звук, нажатый в этом состоянии, но иногда вам действительно не нужно.

Ответ 2

Я столкнулся с этим, и это то, что я придумал. В своем макете установите фон в ресурс, который можно выделить:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/clickable_layout"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:background="@drawable/clickable"> 
...
</LinearLayout>

Затем в drawable добавьте clickable.xml так:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
    android:drawable="@android:drawable/list_selector_background" />      
</selector>

Затем вам решать, хотите ли вы добавить обработчик кликов в свою деятельность.

Ответ 3

Вы можете установить все элементы внутри макета clickable = false. Затем вы должны имитировать поведение выбора, задав макет фона для какого-либо цвета и задав все остальные с прозрачным фоном при щелчке макета. Вы можете использовать идентификатор макета в качестве индекса, чтобы узнать, какой макет выбран.