jqp*_*liq 60
代替的OnItemClickListener,添加一个OnClickListener到每个从适配器返回你的看法.您需要使用setItemsCanFocus设置列表:
ListView list = (ListView) findViewById(R.id.myList);
list.setAdapter(new DoubleClickAdapter(this));
list.setItemsCanFocus(true);
Run Code Online (Sandbox Code Playgroud)
然后在你的适配器的getView,这将产生一个可点击的行.假设该按钮位于膨胀的xml中.
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = View.inflate(context, R.layout.cell, null);
view.setClickable(true);
view.setFocusable(true);
view.setBackgroundResource(android.R.drawable.menuitem_background);
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new AlertDialog.Builder(context).setTitle("touched").show();
}
});
return view;
}
Run Code Online (Sandbox Code Playgroud)
mei*_*ilp 51
设置你ImageButton的属性:
android:focusable="false"
Run Code Online (Sandbox Code Playgroud)
因为AbsListView.onTouchEvent检查child.hasFocusable().
Jul*_*mes 10
我已经在SDK级别8和16上测试了以下解决方案.
在 getView()
setFocusable(false);
setClickable(false);
Run Code Online (Sandbox Code Playgroud)
而不是在适配器中设置它们是真的getView()我认为原始问题想要的,并且意味着一个OnItemClickListener被调用,只要OnClickListener没有设置getView().
我假设任何事情,你可以做一个查看的OnClickListener,你可以在做很容易ListView的OnItemClickListener.(setOnClickListener在View上隐式地将视图设置为可点击,这显然可以防止ListView相应的OnItemClickListener被调用.)
根据ImageButton物品被按压或翻转时的视觉状态,行为是人们所期望的.
解决方案是一个轻微的错觉,因为它是被按下的列表项而不是它ImageButton自己,所以如果按钮没有占据整个列表项,单击项中的其他位置仍然会使按钮的可绘制状态反映点击.焦点相同.这可能是值得付出的代价.
这肯定会奏效.将其添加到布局定义中.
android:descendantFocusability="blocksDescendants"
Run Code Online (Sandbox Code Playgroud)
在这里找到解决方案
小智 5
OnClickListener为每个视图设置一个替代方法是不使用ImageButton- ImageView而是使用.该ImageView仍可事件发送到OnClickListener并不会接管的焦点.
最好的方法是:
android:focusable="false"
android:focusableInTouchMode="false"
Run Code Online (Sandbox Code Playgroud)
为此设置这些属性Imagebutton并尝试.一世