2011-09-07 8 views
1

それぞれにHorizo​​ntalScrollViewを持つリストアイテムがあります。したがって、リストを上下にスワイプすることができ、リスト項目をスワイプすることができるはずです。 (例えば、Pulse News App)。Android ListViewの許容値

私が遭遇しているのは、Horizo​​ntalScrollViewをスクロールするたびに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; 
     } 
    } 

これはあなたが作成するカスタムリストビューでこれらをオーバーライドする必要があります。これを使用してアプリケーションで問題を解決しました。お役に立てれば。