2013-09-22 56 views
4

我需要使用SetOnTouchListener:模擬SetOnTouchListener或者在xamarin如何使用,什麼樣的參數必須是

LinearLayout cardLinearLayout = FindViewById<LinearLayout> (Resource.Layout.CardList); 
cardLinearLayout.SetOnTouchListener (this);//Can't use THIS, must be argument with IOnTouchListener type. Where can I get this argument? 

enter image description here

我想用它來ViewFlipper。也許存在其他方式。

+2

確保你在Activity中實現了[View.IOnTouchListener](http://docs.xamarin.com/recipes/android/other_ux/gestures/detect_a_touch)? –

+0

@ρяσѕρєяK但是我沒有CardList的Activity,只有MainActivity。 – Olena

回答

9

在Xamarin.Android中,很多Listener接口已被轉換爲events以獲取更多C#類型的代碼。

因此,在所有View s上都有一個Touch事件,它對應於發生在OnTouchListener中的事件。

但是,如果你真的想,你可以實現IOnTouchListener接口,像這樣:

public class MyOnTouchListener : Java.Lang.Object, View.IOnTouchListener 
{ 
    public bool OnTouch(View v, MotionEvent e) 
    { 
     /* do stuff */ 
    } 
} 

,然後用它在你的LinearLayout像這樣:

cardLinearLayout.SetOnTouchListener (new MyOnTouchListener()); 

您可以比較那到Touch事件,只需要一行代碼:

cardLinearLayout.Touch += (s, e) => { /* do stuff */ }; 
+0

爲了澄清,OnTouch具有bool的返回值。當使用事件處理程序時,這個布爾在哪裏去? –

+1

第二個'e'參數有一個'Handled'屬性。 – Cheesebaron

+0

嗨@Cheesebaron,我嘗試使用最後一種形式,但是當我添加Touch時滑塊停止工作。查看代碼: var thisButton = Control作爲Android.Widget.SeekBar; thisButton.Touch + =(對象發件人,TouchEventArgs參數)=> { 開關(args.Event.Action) { 情況MotionEventActions.Up: customButton.OnReleased(); 休息; } }; –

相關問題