Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 查看时双击事件_C#_Android_Xamarin_Xamarin.android - Fatal编程技术网

C# 查看时双击事件

C# 查看时双击事件,c#,android,xamarin,xamarin.android,C#,Android,Xamarin,Xamarin.android,如何在Xamarin.Android中检测视图的双击事件?我的TouchListener失败。 有一种说法说双击不是安卓模式 对于原生Android(Java),有一个链接,但我想在Xamarin(C#)中这样做。您问题中的第一个链接已经包含了。遗憾的是,这不是公认的答案。正确答案的C#端口为: public class DoubleTappableView : View { private readonly GestureDetector _gestureDetector;

如何在Xamarin.Android中检测
视图的双击事件?我的
TouchListener
失败。 有一种说法说双击不是安卓模式


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

您问题中的第一个链接已经包含了。遗憾的是,这不是公认的答案。正确答案的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语言中完成这项任务太容易了。你是新来的,所以我给你一个确切的答案

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

创建一个类

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

我希望这对你有帮助。

谢谢。我想使双击事件与视图相同。在我的活动或片段中单击。所以我可以在我的项目中使用它。请指导我。这其实很简单,只需在这个视图中添加一个事件,并在OnDoubleTap方法中提升它。但是,没有必要这样做。上面的代码工作得很好,没有必要再添加一层,你能告诉我怎么做吗?我也不想创建自定义视图。我只想使用Android Views,它在实现和引发事件方面的复杂性几乎为零(而且有很多关于如何实现的教程)。向这个类添加一个事件,创建它的EventArgs并在OnDoubleTap中提升它,提供你想要的任何数据。我再说一遍,在这里添加一个事件并没有多大帮助。救了我的命!谢谢