0

我有一个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),但如果这是答案,我不确定在哪里放置它(我在几个地方尝试过)。

在我设置适配器的片段中,我有这个空方法,

public void onLongPress(MotionEvent e) {

    return;
}

我尝试将代码放在那里,但没有对视图的引用。所以不知道如何进行?

4

1 回答 1

1

您仍然可以使用GestureDetector“查看”投掷手势,并且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);
}

可以在此处找到完整的Fragment类示例。

于 2013-03-08T18:00:02.553 回答