我有列表项,每个项目都有一个HorizontalScrollView。因此,我应该可以在列表中上下滑动,也可以水平滑动列表项。 (例如Pulse News App)。
我遇到的是,每当我滚动HorizontalScrollView时,ListView也会稍微滚动,但会在用户体验方面产生恼人的干扰。
所以,我实际上是想继承ListView并实现我自己的ListView小部件。但是,我不知道要覆盖哪种方法,以便我可以增加X容差并阻止listview提供这些不必要的闪烁。
答案 0 :(得分: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;
}
}
这对你有帮助,你必须在你创建的自定义列表视图中覆盖这些,我用它来消除我的应用程序中的问题。希望这可以帮助。