我正在使用Xamarin,并且我有一个只有FrameLayout的Activity。在Activity中,我还有一些ActionBar选项卡(在此链接帮助下创建的: http://developer.xamarin.com/guides/android/user_interface/tab_layout/actionbar/),它用我们的FrameLayout替换了存在顶部的一个小TextView和屏幕其余部分的ListView的片段。Xamarin手势检测器OnFling和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。该怎么办?是否有更多的代码需要查看?
滑动的东西像一个魅力工作,但正如你所说,它有点bug,它崩溃时,方向改变例如(缺少GenericViewPagerFragment的默认构造函数),我无法修复。而且我也不知道如何从ActionBar中的刷新按钮更新我的ListView。 – hericson