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

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()...

4b9b3361

Ответ 1

Когда вы устанавливаете OnItemClickListener, событие onItemClicked вызывается только в том случае, если дочерний элемент ListView не имеет набора OnClickListener. Установка clickable в true обеспечит дочерний вид (в данном случае ваш TextView) пустой OnClickListener. Поскольку TextView OnClickListener установлен, OnItemClickListener не будет вызываться.

Ответ 2

Я думаю, вы не должны писать android:clickable="true", когда он был дочерним элементом списка элементов списка. Если у вас есть селектор для listitem, просто setbackground в корневом теге.