2015-09-18 92 views
2

如何在Xamarin.Android中檢測View的雙擊事件?我與TouchListener失敗。 有一個SO answer表示雙擊不是Android模式。查看雙擊事件

對於原生Android(Java),有一個answer,但我想在Xamarin(C#)中這樣做。

回答

3

在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); 
      }; 

我希望這對你有所幫助。

+0

感謝這工作就像一個魅力。 –

+0

拯救了我的生命!非常感謝 – user1989040

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; 
     } 
    } 
} 
+0

謝謝。我想在我的活動或片段中創建一個與View.Clicked相同的DoubleClicked事件。所以我可以在我的項目中使用它。請指導我。 –

+0

這實際上很平凡,只需將一個事件添加到此視圖並將其引發到OnDoubleTap方法中即可。但是,沒有必要這樣做。上面的代碼完美地工作,不需要添加其他圖層 –

+0

你能告訴我我該怎麼做?另外我不想創建自定義視圖。我只想使用Android視圖 –