【发布时间】: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