Android: clickable = "true" означает, что он не доступен для кликов?
У меня есть ListView с некоторыми пользовательскими разделами в нем. Каждый раздел имеет собственный заголовок. Я хочу, чтобы элементы в списке были доступны для кликов, но, очевидно, не хотят, чтобы заголовки разделов были доступны. Поэтому в xml для заголовков разделов я добавил android:clickable="false"
.
При отладке я заметил, что заголовки разделов по-прежнему отвечают на мой setOnItemClickListener()
. Затем я попытался установить android:clickable="true"
в XML. И, конечно же, просмотры заголовков разделов больше не реагируют на клики...
Итак, в чем заключена сделка? Почему установка clickable
= true
означает, что она НЕ доступна для кликов? Я что-то не понимаю? Вот мой XML:
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/item_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/black"
android:background="@android:color/transparent"
android:textAppearance="?android:attr/textAppearanceLarge"
android:paddingLeft="30dp"
android:clickable="true" />
Если я установил, что clickable="false"
внизу, то это представление начинает отвечать на setOnItemClickListener()
...
Ответы
Ответ 1
Когда вы устанавливаете OnItemClickListener
, событие onItemClicked
вызывается только в том случае, если дочерний элемент ListView
не имеет набора OnClickListener
. Установка clickable в true обеспечит дочерний вид (в данном случае ваш TextView
) пустой OnClickListener
. Поскольку TextView
OnClickListener
установлен, OnItemClickListener
не будет вызываться.
Ответ 2
Я думаю, вы не должны писать android:clickable="true"
, когда он был дочерним элементом списка элементов списка. Если у вас есть селектор для listitem
, просто setbackground
в корневом теге.