Android — Отключить TextView onClick в XML?

#android #listview #adapter

#Android #listview #адаптер

Вопрос:

У меня есть список различных текстовых представлений. Тогда у меня есть onItemClick обработчик для обработки, когда пользователь нажимает на элементы.

Некоторые текстовые представления я хочу, чтобы они были интерактивными. Некоторые я не хочу, чтобы они были интерактивными.

Для некликабельных текстовых представлений я использую следующий XML

 <TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@ id/item_separator_text"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="@color/black"
    android:background="@drawable/rounded_corners_none"
    android:textSize="16sp"
    android:paddingTop="15dp"
    android:paddingBottom="5dp"
    android:paddingLeft="15dp"
    android:enabled="false"
    style="?android:attr/listSeparatorTextViewStyle" />
  

У меня есть enabled="false" там, но элемент по-прежнему доступен для просмотра. Есть ли атрибут XML, который я могу использовать, чтобы сделать текстовый просмотр недоступным для просмотра?

Или проблема в том, что я на самом деле не нажимаю на TextView, а щелкаю на представлении, содержащем TextView?

Единственный способ отключить нажатие — это сделать это программно?

 public void onItemClick(...)
{
  if ( // view is disabled )
    return;

  // else, do something
}
  

Ответ №1:

Конечно

 android:clickable="false"
  

В коде вы могли бы использовать метод setClickable() .

«Интерактивность» — это то, что есть у всех типов представлений и групп просмотра, хотя иногда нужно быть немного осторожным с тем, как / когда ViewGroup передает щелчок (или нет) своим дочерним элементам.

Кроме того, после проверки enabled не является допустимым атрибутом для TextViews.

Комментарии:

1. Спасибо, но по некоторым причинам он не работает для TextView в моем приложении. Хотя это довольно сложный макет. Я просто использую программный способ сделать это. В любом случае спасибо. Я все равно отмечу ваш ответ как принятый, потому что он, вероятно, работает в большинстве ситуаций с обычными макетами.

2. «Кроме того, после проверки enabled не является допустимым атрибутом для TextViews». Что именно вы имеете в виду?

Ответ №2:

Для меня это работает нормально :

EditText.setInputType(Просмотр.LAYER_TYPE_NONE);

Комментарии:

1. Да, но это не решение «в XML».