双击视图事件
Double Tap Event on View
如何在 Xamarin.Android 中检测 View
的双击事件?我失败了 TouchListener
。
有一个 SO answer 说双击不是 Android 模式。
对于本机 Android (Java),有一个 answer,但我想在 Xamarin (C#) 中这样做。
您问题中的第一个 link 已经包含 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;
}
}
}
用 c# 做这个任务太容易了。你是这个世界的新手,所以我给你确切的解决方案。
首先,您不必为此创建新的自定义视图。
创建 class
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);
};
希望对您有所帮助。
如何在 Xamarin.Android 中检测 View
的双击事件?我失败了 TouchListener
。
有一个 SO answer 说双击不是 Android 模式。
对于本机 Android (Java),有一个 answer,但我想在 Xamarin (C#) 中这样做。
您问题中的第一个 link 已经包含 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;
}
}
}
用 c# 做这个任务太容易了。你是这个世界的新手,所以我给你确切的解决方案。
首先,您不必为此创建新的自定义视图。
创建 class
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);
};
希望对您有所帮助。