我OnGestureListener
上有一个ListView
因为我需要手势,但现在ContextMenu
无效。
已编辑的代码:
我在onActivityCreated
的 Fragment
的 ListView
方法中有这个:
gestureDetector = new GestureDetector(getActivity(),
new GestureListener());
View.OnTouchListener gestureListener = new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
};
listView.setOnTouchListener(gestureListener);
这样做可以让我的手势,但是,评论它会带回我的ConextMenu。
我知道我可以使用showContextMenu(v),但如果答案是这样的话,我不知道该把它放在哪里(我已经在几个地方试过了)。
在我的Fragment里面设置了适配器,我有这个空方法,
public void onLongPress(MotionEvent e) {
return;
}
我尝试将代码放在那里,但没有引用View。所以不确定如何继续?
答案 0 :(得分:1)
您仍然可以使用GestureDetector
来“查看”这个投放的手势,并且使用{{1}中的以下代码长按ContextMenu
时也会打开ListView
回调:
onLongPress()
完整的@Override
public void onLongPress(MotionEvent e) {
registerForContextMenu(listView);
final int x = (int) e.getX();
final int y = (int) e.getY();
int position = listView.pointToPosition(x, y);
final int firstVisible = listView.getFirstVisiblePosition();
View v = listView.getChildAt(position - firstVisible);
getActivity().openContextMenu(v);
}
班级示例can be found here。