我的问题与此类似:ListView: disabling clicking/focus
但是,我不想禁用默认的onClick,只需长按即可。我已经注册了我的ListView以创建上下文菜单,我想为头元素禁用它(或者至少改变它的行为)。我该怎么做呢?
谢谢!
答案 0 :(得分:4)
想出来! menuInfo不一定是AdapterContextMenuInfo(它有位置)。
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
if (((AdapterContextMenuInfo)menuInfo).position == 1) {
inflater.inflate(R.menu.foo1, menu);
return;
}
inflater.inflate(R.menu.foo2, menu);
}
答案 1 :(得分:1)
我没试过,但它可能有用。
ListView扩展了ViewGroup,因此当“长按”ListView时,应该通过长按来传递监听器哪个子视图。
创建自己的ListView类,该类实现onLongClickListener,然后检查View是Header还是Footer,如果是,则返回'true'以显示long-click已被'消耗'并且表示不再进一步应该采取行动。
protected MyListView extends ListView
implements onLongClickListener {
public boolean onLongClick (View v) {
boolean longClickConsumed = false;
// Check if v is either your Header or Footer
// if so then set longClickConsumed to be true
return longClickConsumed;
}
}
答案 2 :(得分:0)
This答案几乎是好的,问题在于长时间点击没有取消,它只是有替代行为。也无所事事,会让用户感到困惑,因为用户界面会像长时间点击一样,但不会发生任何事情。
解决方案非常简单。
listView.addFooterView(footer, null, false);