在视图上双击事件

时间:2015-09-18 14:56:55

标签: c# android xamarin xamarin.android

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

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

2 个答案:

答案 0 :(得分:6)

在c#中执行此任务太容易了。你是这个世界的新手,所以我给你一个确切的解决方案。

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

创建一个类

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);
            };

我希望这对你有所帮助。

答案 1 :(得分:2)

您问题中的第一个链接已包含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;
        }
    }
}
相关问题