如何在Xamarin.Android中检测View
的双击事件?我失败了TouchListener
。
有一个SO answer表示双击不是Android模式。
对于原生Android(Java),有一个answer,但我想在Xamarin(C#)中这样做。
答案 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;
}
}
}