【发布时间】:2015-04-30 11:53:04
【问题描述】:
我有自定义 VerticalViewPager,其中 GridView 有垂直滚动条,可以说它有 50 个项目...
现在,问题是我需要识别 Gridview 何时在顶部滚动并允许 viewpager 顶部滑动以及当 gridview 在底部滚动时允许滑动到底部...
这基本上是开箱即用的,但问题是只有当我在 gridview 上快速滑动时,它才允许我转到另一个视图...但是当我拖动其他一些元素时,例如在gridview上,那么它不需要快速触发垂直viewpager的事件...... 有人知道吗?
现在我去编辑gridview的computeVerticalScrollRange()和overScrollBy()或者设置overScrollMode,这些都没有帮助。
对不起,如果我不完全理解,我正在做的是我有一个名为 ScrollableGridView 的类,我在其中实现了如下所示的方法:
编辑 1:
@Override
protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent){
if(deltaY>0){
System.out.println("Overscrolling to BOTTOM registered from ScrollableGridView");
}else if(deltaY<0){
System.out.println("Overscrolling to TOP registered from ScrollableGridView");
}
return super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, maxOverScrollX, 0, isTouchEvent);
}
我可以识别用户是在列表的末尾还是开头,我只是不知道如何对 gridview 说当用户在顶部时停止推到顶部,只是让它在verticalviewpager上,但允许用户当他在 gridview 的尽头时,在 gridview 和相反的地方往下走。
我使用的方法,如 super.setEnabled(false); 或 super.requestDisallowInterceptTouchEvent(false); 阻止了向后移动的可能性,它会阻止 gridview,因此 VerticalViewpager 将开始工作,但随后在 gridview 中向后滚动被禁用,这会很不自然。
【问题讨论】:
-
应该和scrollview里面的两个gridview一样,你想识别gridview是在开始还是结束,让父(scrollview)做他的事情,滚动到另一个元素->到上面的gridview或以下
标签: java android gridview android-viewpager