如何在MonoDroid中使用长按?

时间:2011-09-24 10:22:09

标签: android events mono xamarin.android

在我用这种方式进行长时间点击的那一刻:

button.SetOnLongClickListener(new MyLongClickListener());

public class MyLongClickListener : View.IOnLongClickListener
{
    public bool OnLongClick(View v)
    {
        //do something pretty cool
        return true;
    }

    public IntPtr Handle
    {
        get { throw new NotImplementedException(); }
    }
}

但是,在OnLongClick方法中编写一个简单的一行或两行的课程似乎并不是很聪明。所以我想知道是否有更好的解决方案?

2 个答案:

答案 0 :(得分:4)

编写侦听器类的方法是在Java中实现它的方法,这就是为什么它在Mono for Android中暴露出来的原因。也就是说,在Mono for Android中,如果您愿意,可以将LongClickHandler类型的委托分配给LongClick属性。如果你愿意的话。

view.LongClick = onLongClick;

private bool onLongClick(View view) 
{
    // do some stuff

    return true;
}

view.LongClick = (clickedView) =>
{
    // do some stuff

    return true;
};

答案 1 :(得分:1)

请参阅此示例代码:

[Activity(Label = "My Activity", MainLauncher = true)]
public class Activity1 : Activity
{
protected override void OnCreate(Bundle bundle)
{
    base.OnCreate(bundle);            
    SetContentView(Resource.layout.main);

    Button button = FindViewById<Button>(Resource.id.button);
    TextView view = FindViewById<TextView>(Resource.id.text);

    button.Click += (s, args) => view.Text = "Clicked!";
    button.LongClick += (s, args) =>
                            {
                                view.Text = "Long click!";
                                args.ReturnValue = false;
                            };
}
}