2013-11-26 3 views
18
  1. У меня есть ListView в моем ListView show ImageButton.Listview itemclick не работает

  2. Я установил focusalble «false» и focusableInTouchMode «false» в ImageButton.

  3. Я установил ListView.OnItemClickListner. Когда я запускаю свой проект, он показывает мой ListView.

  4. Но когда я нажимаю на Listview, он не работает.

  5. Затем я удаляю ImageButton в макете и запустить свой проект еще раз, когда я нажимаю ListView Это работает

  6. Что случилось?

+2

Как мы можем помочь вам, не имея кода для иллюстрации вашей проблемы ... – Coderji

+0

установить кнопку изображения на onclickable false, onfocusable false, а также сфокусироваться при касании на false. Также в адаптере задайте эти свойства. если вам нужно реализовать щелчок по кнопке изображения, сделайте это в классе адаптера. –

ответ

62
android:focusable="false" 
android:focusableInTouchMode="false" 

не работает для ImageButton.

в макете XML, добавить это свойство в корневой макет

android:descendantFocusability="blocksDescendants" 

Он отлично работает для ListView, который имеет ImageButton.

+0

Ahh .. Я продолжаю забывать этот тег. Потерпел еще час. Хотел бы я проголосовать не один раз. – noob

+0

рад, что это вам поможет. – Dev

+2

Все еще актуально, через год! – User3

1

На самом деле ничего плохого. Что вы делаете, все в порядке. Но я думаю, что вы забыли один ключевой фактор здесь ImageButton имеет собственный OnClickListener. Поэтому, когда вы вставляете свой ImageButton в строку списка ListView.OnItemClickListner не работает, потому что click/touch вызывается ImageButton, из-за этого ListView не получает ваше событие click/touch. Оформить эту ссылку: How to fire onListItemClick in Listactivity with buttons in list?

0

Я предполагаю, что вы используете настройки списка просмотра Пункт просто попытаться установить установить focusable «ложь» и focusableInTouchMode «ложь» для всех зрения в вашем custom_list_view_item.xml Не беспокойтесь о вашей кнопки, если вы используете кнопку прослушивания клипов для изображения Кнопка в адаптере, она также будет работать нормально. вобще focusable «ложь» и focusableInTouchMode «ложь» для все зрения в вашем custom_list_view_item.xml

0

Может быть вы написали OnClick перехватчик для кнопки изображения в классе адаптера

Пример:

imageButton.setOnClickListener(new OnClickListener() 
     { 
      @Override 
      public void onClick(View v) { 


      } 
     }); 

Если вы установили onclick listener для listItem. Он автоматически потребляет вход действия , чтобы элемент списка не мог быть нажат.

6

Вы не единственный пострадавший :) Это поведение часто рассматривается как ошибка разработчиков Android Посмотрите на этот link их разговор.

Чтобы решить вашу проблему, просто включите атрибут android:descendantFocusability="blocksDescendants" в свой корневой макет.

1

Если вы используете пользовательские Listview и в пользовательском Listview строке элемента списка, если только Textview и Imageview, вы должны удалить android:inputType="". Это вызывает проблему фокусируемости.

Смежные вопросы