2013-11-26 164 views
18
  1. 我在我的ListView显示ImageButton ListView。列表视图itemclick不工作

  2. 我为ImageButton设置了focusalble“false”和focusableInTouchMode“false”。

  3. 我设置了ListView.OnItemClickListner。当我运行我的项目它显示我的ListView。

  4. 但是当我点击Listview它不工作。

  5. 然后我删除ImageButton的布局并再次运行我的项目,当我点击的ListView它的工作

  6. 错了呢?

+2

我们如何才能帮助您,而无需代码来说明您的问题...... – Coderji

+0

将图像按钮设置为onclickable false,onfocusable false,并且还可以将focus设置为false。另外在适配器中设置此属性。如果你需要实现点击图像按钮,请在适配器类中进行。 –

回答

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

不适用于ImageButton。

在你的布局XML,这个属性添加到根布局

android:descendantFocusability="blocksDescendants" 

它完全适用于有ImageButton的列表视图。

+0

啊..我一直忘记这个标签。浪费了一个小时。我希望我能不止一次地投票。 – noob

+0

很高兴它可以帮助你。 – Dev

+2

仍然相关,一年后! – User3

1

其实没有什么是错的。你在做什么是好的。但我想你忘了一个关键因素ImageButton有它自己的OnClickListener。所以当你将ImageButton嵌入到ListView行中时ListView.OnItemClickListner不起作用,因为Click/touch是由ImageButton调用的,这是因为ListView没有得到你的点击/触摸事件。 结帐此链接:How to fire onListItemClick in Listactivity with buttons in list?

0

我猜你是使用自定义列表视图项目只是尝试设置 设置focusable“造假” focusableInTouchMode“假”在你的custom_list_view_item.xml 所有观点,不要担心你的图片按钮,如果你使用适配器中的图像按钮的点击监听器,它也可以正常工作。只是做focusable“假”,并在你的custom_list_view_item.xml focusableInTouchMode“假”的所有观点

0

可能是你在适配器类书面的onclick侦听器图像按钮

例子:

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


      } 
     }); 

如果您为listItem设置了onclick监听器,它将自动消耗动作输入 ,因此列表项可能不会被点击。

6

你不是唯一的受害者:) 这种行为通常被认为是Android开发者的一个错误看看这个link他们的谈话。

要解决您的问题 - 只需在您的根布局中包含android:descendantFocusability="blocksDescendants"属性。

1

如果您正在使用自定义的Listview和自定义Listview行项目列表中如果只有TextviewImageview,你应该删除android:inputType=""。它会引起可聚焦性问题。