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