我的ListView中有一个ListView显示ImageButton。
我将focusalble“false”和focusableInTouchMode“false”设置为ImageButton。
我设置了ListView.OnItemClickListner。当我运行我的项目它显示我的ListView。
但是当我点击Listview时它不起作用。
然后我在布局中删除了ImageButton并在我点击ListView它再次运行我的项目
出了什么问题?
答案 0 :(得分:65)
android:focusable="false"
android:focusableInTouchMode="false"
不适用于ImageButton。
在布局xml中,将此属性添加到根布局
android:descendantFocusability="blocksDescendants"
它适用于具有ImageButton的列表视图。
答案 1 :(得分:7)
您不是唯一的受害者:) 此行为通常被Android开发人员视为错误请查看他们对话的link。
要解决您的问题,只需在根布局中包含android:descendantFocusability="blocksDescendants"
属性。
答案 2 :(得分:1)
其实没有错。你在做什么都没关系。但我认为你忘记了一个关键因素ImageButton拥有它自己的OnClickListener。因此,当您将ImageButton嵌入到listview行时,ListView.OnItemClickListner无法正常工作,因为ImageButton会调用click / touch,这是因为ListView没有收到您的点击/触摸事件。 查看此链接:How to fire onListItemClick in Listactivity with buttons in list?
答案 3 :(得分:1)
如果您使用的是自定义Listview
,并且在自定义Listview
行项目列表(仅Textview
和Imageview
中),则应删除android:inputType=""
。这会引起焦点问题。
答案 4 :(得分:0)
我猜您正在使用自定义列表视图项目只是尝试设置
为focusable
中的所有视图设置focusableInTouchMode
“false”和custom_list_view_item.xml
“false”
如果您在适配器中使用图像按钮的单击侦听器,请不要担心图像按钮,它也可以正常工作。对custom_list_view_item.xml中的所有视图执行focusable
“false”和focusableInTouchMode
“false”
答案 5 :(得分:0)
可能是你已经为适配器类
中的图像按钮编写了onclick监听器示例:
imageButton.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v) {
}
});
如果为listItem设置onclick侦听器。它将自动使用操作输入 所以不能点击列表项。