发布于2022-05-19 07:39 阅读(924) 评论(0) 点赞(22) 收藏(0)
我有自定义的 VerticalViewPager,其中 GridView 有垂直滚动条,可以说它有 50 个项目......
现在,问题是我需要识别何时 Gridview 在顶部滚动并允许 viewpager 顶部滑动以及当 gridview 在底部滚动时允许滑动到底部...
这基本上是开箱即用的,但问题是只有当我在gridview上快速滑动时,它才允许我转到另一个视图......但是当我拖动其他一些元素时,例如在gridview上,那么它不需要快速触发垂直视图页面的事件......这里有人会知道吗?
现在我去编辑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 中向后滚动被禁用,这行为不自然。
你想做的基本上SwipeToRefreshLayout
和谷歌做的一样。它根据方法的分辨率true/false
返回(对于您的代码,您将执行onInterceptTouchEvent
canChildScrollUp()
canChildScrollVertically()
这是 SwipeToRefreshLayout 的源代码:
在第 613 行,您可以看到canChildScrollUp()
API14+ 仅调用ViewCompat.canScrollVertically
或 if 低于 14 检查的方法.getFirstVisiblePosition
。
触摸事件拦截也应该很简单。
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if(canChildScrollVertically()) return false;
else return super.onInterceptTouchEvent(ev);
}
作者:黑洞官方问答小能手
链接:http://www.javaheidong.com/blog/article/442842/830309c0ba651a10e055/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!