【问题标题】:Xamarin GestureDetector OnFling and ListViewXamarin GestureDetector OnFling 和 ListView
【发布时间】:2015-01-01 19:21:28
【问题描述】:

我正在使用 Xamarin,并且我有一个只有 FrameLayout 的 Activity。在活动中,我还有一些 ActionBar 选项卡(在此链接的帮助下创建: http://developer.xamarin.com/guides/android/user_interface/tab_layout/actionbar/ ) 将我的 FrameLayout 替换为 Fragments,其中存在顶部的一个小 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; 
}

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

【问题讨论】:

    标签: android listview xamarin swipe gesture


    【解决方案1】:

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

    【讨论】:

    • 滑动的东西就像一个魅力,但正如你所说,它有点错误,它会在例如方向改变时崩溃(缺少 GenericViewPagerFragment 的默认构造函数),我无法解决这个问题。而且我也不知道如何从 ActionBar 中的 Refresh 按钮更新我的 ListViews。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多