【发布时间】:2015-09-18 14:56:55
【问题描述】:
如何在 Xamarin.Android 中检测 View 的双击事件?我在TouchListener 上失败了。
有一个 SO answer 表示双击不是 Android 模式。
对于 Native Android (Java),有一个 answer,但我想在 Xamarin (C#) 中这样做。
【问题讨论】:
标签: c# android xamarin xamarin.android
如何在 Xamarin.Android 中检测 View 的双击事件?我在TouchListener 上失败了。
有一个 SO answer 表示双击不是 Android 模式。
对于 Native Android (Java),有一个 answer,但我想在 Xamarin (C#) 中这样做。
【问题讨论】:
标签: c# android xamarin xamarin.android
在 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);
};
希望对你有所帮助。
【讨论】:
您问题中的第一个链接已包含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;
}
}
}
【讨论】: