2014-12-31 2 views
0

저는 Xamarin을 사용하고 있으며 FrameLayout 만있는 Activity가 있습니다. 액티비티에는 ActionBar Tabs (이 링크의 도움으로 생성됨 : http://developer.xamarin.com/guides/android/user_interface/tab_layout/actionbar/)이 있습니다. 내 FrameLayout을 위에있는 작은 TextView와 나머지 화면의 ListView로 대체합니다.Xamarin GestureDetector OnFling 및 ListView

는 지금은 탭 사이에 슬쩍 할 수있는 능력을 갖고 싶어하고 나는이 링크에서 예를 찾을 : http://developer.xamarin.com/recipes/android/other_ux/gestures/create_a_gesture_listener/

문제는 그것은 단지 텍스트 뷰가 아닌 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 용 예제를 찾았습니다. 무엇을해야합니까? 더 많은 코드가 필요합니까?

답변

0

ViewPager을 사용하여 스 와이프 기능을 지원하는 방식이 약간 다릅니다. Xamarin 샘플에서이 example을 살펴 보겠습니다. 약간 버그가 있지만 그로부터 요점을 얻을 수 있습니다.

+0

스 와이프 건은 매력처럼 작동했지만, 당신이 말했듯이 약간의 버그가 있습니다. 예를 들어 오리엔테이션이 변경되는 동안 크래시가 발생하며 (GenericViewPagerFragment의 기본 생성자가 누락 됨) 수정할 수 없습니다. 또한 ActionBar에서 새로 고침 버튼을 사용하여 ListView를 업데이트하는 방법을 알지 못합니다. – hericson

관련 문제