我正在使用Xamarin,并且我有一个只有一个FrameLayout的活动。在这个活动中,我还有一些ActionBar标签(通过这个链接创建:http://developer.xamarin.com/guides/android/user_interface/tab_layout/actionbar/ ),它用位于顶部的一个小TextView和屏幕其余部分的ListView的片段替换我的FrameLayout。
现在,我希望能够在选项卡之间滑动,我从这个链接中找到了一个示例: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);以及我的主要活动中的swipe功能:
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示例。该怎么办呢?您还需要查看更多代码吗?
发布于 2015-01-01 19:21:29
您需要使用一种略有不同的方法来使用ViewPager来支持滑动功能。只要看看Xamarin示例中的这个example,它有点but,但你可以从中得到要点。
https://stackoverflow.com/questions/27721803
复制相似问题