2011-09-07 71 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; 
     } 
    } 

这将帮助你,你必须在你创建的自定义列表视图中重写这些,我用它来消除我的应用程序中的问题。希望这可以帮助。