视图上的双击事件

3
我如何在Xamarin.Android中检测View的双击事件?使用TouchListener失败。有一个SO answer说双击不是Android的模式。 对于Native Android(Java),有一个answer,但我想在Xamarin(C#)中实现。
2个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
8

在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);
            };
我希望您能从中受益。

3

你问题中的第一个链接已经包含了答案。虽然可惜它不是被采纳的答案。下面是正确答案的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;
        }
    }
}

谢谢。我想在我的活动或片段中创建一个与View.Clicked事件相同的DoubleClicked事件,以便将其用于我的项目中。请指导我。 - Sagar Panwala
这其实很简单,只需将事件添加到此视图并在 OnDoubleTap 方法内引发它即可。但是,没必要这样做。上面的代码已经完美地工作了,没有必要再添加另一个层级。 - William Barbosa
你能展示给我如何做到吗?同时我不想创建自定义视图,我只想使用Android视图。 - Sagar Panwala
在实现和触发事件方面,实际上没有任何复杂性(并且有许多教程可以指导如何实现)。将一个事件添加到这个类中,创建它的EventArgs并在OnDoubleTap内部引发它,提供任何你想要的数据。再次重申,将事件添加到这里并没有太大帮助。 - William Barbosa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,