你要么。使用Touch 事件:
button1.Touch += (s, e) =>
{
var handled = false;
if (e.Event.Action == MotionEventActions.Down)
{
// do stuff
handled = true;
}
else if (e.Event.Action == MotionEventActions.Up)
{
// do other stuff
handled = true;
}
e.Handled = handled;
};
或者您可以显式实现IOnTouchListener 接口(C# 没有匿名类)。请注意,在实现 Java 接口时,您还需要从 Java.Lang.Object 继承,因为我们需要处理 Java 方面的故事(当我们使用 Touch 事件时,这显然不需要)。
public class MyTouchListener
: Java.Lang.Object
, View.IOnTouchListener
{
public bool OnTouch(View v, MotionEvent e)
{
if (e.Action == MotionEventActions.Down)
{
// do stuff
return true;
}
if (e.Action == MotionEventActions.Up)
{
// do other stuff
return true;
}
return false;
}
}
然后设置它:
button1.SetOnTouchListener(new MyTouchListener());
注意,使用后一种方法还需要您处理对要在 OnTouchListener 类中修改的对象的引用,而 C# 事件不需要这样做。
编辑:
附带说明一下,如果您使用Touch 事件或任何其他事件,请记住做一个好公民,并在您不再有兴趣接收该事件时解开该事件。最坏的情况是,如果忘记取消挂钩事件,则会因为无法清理实例而导致内存泄漏。
所以在第一个例子中,不要使用匿名方法:
button1.Touch += OnButtonTouched;
记得解开它:
button1.Touch -= OnButtonTouched;