2011-09-07 62 views
1

我有列表中的每個項目都有一個Horizo​​ntalScrollView。因此,我應該能夠在列表中上下滑動,並在列表項中水平滑動。 (例如Pulse News App)。安卓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; 
     } 
    } 

這將幫助你,你必須在你創建的自定義列表視圖中重寫這些,我用它來消除我的應用程序中的問題。希望這可以幫助。