双击视图事件

Double Tap Event on View

如何在 Xamarin.Android 中检测 View 的双击事件?我失败了 TouchListener。 有一个 SO answer 说双击不是 Android 模式。

对于本机 Android (Java),有一个 answer,但我想在 Xamarin (C#) 中这样做。

您问题中的第一个 link 已经包含 the answer。遗憾的是,这不是公认的答案。正确答案的 C# 端口是:

public class DoubleTappableView : View
{
    private readonly GestureDetector _gestureDetector;

    public DoubleTappableView(Context context, IAttributeSet attrs)
        : base(context, attrs)
    {
        _gestureDetector = new GestureDetector(context, new GestureListener());
    }

    public override bool OnTouchEvent(MotionEvent e)
    {
        return _gestureDetector.OnTouchEvent(e);
    }

    private class GestureListener : GestureDetector.SimpleOnGestureListener
    {
        public override bool OnDown(MotionEvent e)
        {
            return true;
        }

        public override bool OnDoubleTap(MotionEvent e)
        {
            //TODO: Add double tap logic here
            return true;
        }
    }
}

用 c# 做这个任务太容易了。你是这个世界的新手,所以我给你确切的解决方案。

首先,您不必为此创建新的自定义视图。

创建 class

private class GestureListener : GestureDetector.SimpleOnGestureListener
    {
        public override bool OnDown(MotionEvent e)
        {
            return true;
        }

        public override bool OnDoubleTap(MotionEvent e)
        {
            return true;
        }
    }

现在就写这段代码吧。

  GestureDetector _gestureDetector = new GestureDetector (_context, new GestureListener ());

            _gestureDetector.DoubleTap += (object sender, GestureDetector.DoubleTapEventArgs e) => {
                   //apply double tap code here
            };

            //apply touch to your view
            View1.Touch += (object sender, View.TouchEventArgs e) => {
                _gestureDetector.OnTouchEvent (e.Event);
            };

希望对您有所帮助。