Xamarin GestureDetector OnFling and ListView



我正在使用Xamarin,我有一个只有FrameLayout的活动。在活动中,我还有 som 操作栏选项卡(在此链接的帮助下创建:http://developer.xamarin.com/guides/android/user_interface/tab_layout/actionbar/),将我的框架布局替换为片段,该片段存在于顶部的一个小文本视图和屏幕其余部分的列表视图。

现在,我希望能够在选项卡之间滑动,我从此链接中找到了一个示例:http://developer.xamarin.com/recipes/android/other_ux/gestures/create_a_gesture_listener/

问题是它只在轻扫文本视图时做出反应,而不是列表视图。

在我的主要活动中,我声明

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

搜索了又搜索,但只找到了我无法转换为 C# 和 Xamarin 的 Java 示例。怎么办?您是否需要查看更多代码?

您需要

使用稍微不同的方法,使用ViewPager来支持滑动功能。只需在 Xamarin 示例中查看此示例,它有点错误,但您可以从中获取要点。

最新更新