Я использую Xamarin, и у меня есть Activity, в котором есть только FrameLayout. В действии у меня также есть вкладки ActionBar (созданные с помощью этой ссылки: http://developer.xamarin.com/guides/android/user_interface/tab_layout/actionbar/ ), который заменяет мой FrameLayout фрагментами, которые существуют из одного небольшого TextView сверху и ListView на остальной части экрана.
Теперь я хочу иметь возможность переключаться между вкладками, и я нашел пример по этой ссылке: http://developer.xamarin.com/recipes/android/other_ux/gestures/create_a_gesture_listener/
Проблема в том, что он реагирует только на пролистывание TextView, а не ListView.
В моей основной деятельности я объявляю
private GestureDetector _gestureDetector;
private int SWIPE_MAX_OFF_PATH = 250;
private int SWIPE_MIN_DISTANCE = 120;
private int SWIPE_THRESHOLD_VELOCITY = 200;
и в OnCreate у меня есть это:
_gestureDetector = new GestureDetector(this);
И мои функции смахивания в моей основной деятельности:
public override bool OnTouchEvent(MotionEvent e)
{
_gestureDetector.OnTouchEvent(e);
return false;
}
public bool OnDown(MotionEvent e) {
return true;
}
public bool OnFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
{
try {
if (Math.Abs (e1.GetY () - e2.GetY ()) > SWIPE_MAX_OFF_PATH) {
return false;
}
// right to left swipe, dvs gå till höger
if ((e1.GetX () - e2.GetX () > SWIPE_MIN_DISTANCE) && (Math.Abs (velocityX) > SWIPE_THRESHOLD_VELOCITY)) {
Toast.MakeText (this, "Left Swipe", ToastLength.Short).Show ();
}
// left to right swipe, dvs gå till vänster
else if ((e2.GetX () - e1.GetX () > SWIPE_MIN_DISTANCE) && (Math.Abs (velocityX) > SWIPE_THRESHOLD_VELOCITY)) {
Toast.MakeText (this, "Right Swipe", ToastLength.Short).Show ();
}
} catch (Exception ex) {
Console.WriteLine (ex.Message);
}
return true;
}
public void OnLongPress(MotionEvent e) {}
public bool OnScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
return false;
}
public void OnShowPress(MotionEvent e) {}
public bool OnSingleTapUp(MotionEvent e) {
return false;
}
Я искал и искал, но нашел только примеры для Java, которые я не могу преобразовать в C # и Xamarin. Что делать? Есть ли еще код, который вам нужно увидеть?