2011-09-07 4 views
1

각 항목에 HorizontalScrollView가있는 목록 항목이 있습니다. 따라서 목록을 위아래로 스 와이프하고 목록 항목을 가로로 스 와이프 할 수 있어야합니다. (예 : 펄스 뉴스 앱).Android ListView 허용 오차

나는 HorizontalScrollView를 스크롤 할 때마다 ListView도 작은 비트로 스크롤되지만 사용자 경험 측면에서 성가신 방해를 제공합니다.

그래서 사실 ListView의 하위 클래스를 만들고 내 자신의 ListView 위젯을 구현하려고했습니다. 그러나 어떤 방법으로 오버라이드해야할지 알 수 없으므로 X 허용 오차를 높이고 목록 뷰에서 이러한 원치 않는 깜박임을 방지 할 수 있습니다.

답변

1
gestureDetector = new GestureDetector(new YScrollDetector()); 

public boolean onInterceptTouchEvent(MotionEvent ev) { 


     //Call super first because it does some hidden motion event handling 
     boolean result = super.onInterceptTouchEvent(ev); 
     //Now see if we are scrolling vertically with the custom gesture detector 
     if (gestureDetector.onTouchEvent(ev)) { 
      return result; 
     } 
     //If not scrolling vertically (more y than x), don't hijack the event. 
     else { 
      return false; 
     } 
    } 

    // Return false if we're scrolling in the x direction 
    class YScrollDetector extends SimpleOnGestureListener { 
     @Override 
     public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { 
      try { 
       if (Math.abs(distanceY) > Math.abs(distanceX)) { 
        return true; 
       } else { 
        return false; 
       } 
      } catch (Exception e) { 
       // nothing 
      } 
      return false; 
     } 
    } 

이것은 사용자가 작성한 사용자 정의 목록보기에서이를 덮어 써야하는 데 도움이 될 것입니다.이를 사용하여 응용 프로그램에서 문제를 제거합니다. 희망이 도움이됩니다.