ScrollView嵌套可滚动View
来源:互联网 发布:万利达安卓软件 编辑:程序博客网 时间:2024/05/18 01:29
在实际项目需求中,经常会遇到ScrollView嵌套纵向可滚动的View,比如ListView,TextView。在默认情况下,ScrollView检测到纵向有滚动就会intercept touch事件然后滚动自身,导致子View根本无法滚动。
网友的大部分做法是在子View检测到Down事件时马上requestDisallowInterceptTouchEvent,检测到Up事件时再取消request。实际效果存在一个问题,如果子View本身内容比较少,根本不需要滚动,此时会发现手指在上面滚动时没有效果。
下面的示例稍作改动,仅在子View可滚动的情况下才请求parent不要拦截事件,在滚动完毕后告诉parent可以拦截事件。
同样是复写子View的OnTouchEvent,当然调用子View的setOnTouchListener也是一样的
@Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: // do nothing break; case MotionEvent.ACTION_MOVE: int deltaY = (int) (event.getY() - lastY); if (deltaY > 0) { // pull down currently // if view support pull down, then request parent do not intercept touch event. getParent().requestDisallowInterceptTouchEvent(canScrollVertically(-1)); } else if (deltaY < 0) { // pull up currently getParent().requestDisallowInterceptTouchEvent(canScrollVertically(1)); } break; case MotionEvent.ACTION_UP: // reset state getParent().requestDisallowInterceptTouchEvent(false); break; case MotionEvent.ACTION_CANCEL: // parent has intercepted the touch event break; } lastY = event.getY(); // call super to process scrolling return super.onTouchEvent(event); }
外面只需要根据deltaY计算出用户滑动方向,然后判断该方向上是否可以滑动,是则告诉parent不要拦截事件,否则告诉parent可以拦截。
阅读全文
0 0
- ScrollView嵌套可滚动View
- android之ScrollView里嵌套ListView(都可滚动)
- 修改Scrollview嵌套其他可滚动控件 如listview或者recycleView等自动滚动的问题
- RecyclerView 嵌套RecyclerView 或者 ScrollView当中嵌套RecyclerView ,子View会自动滚动到顶部
- ScrollView(创建滚动View)
- 滚动view的嵌套。
- scrollView中嵌套gridView或者listView亦或者可扩展的view的情况
- ScrollView嵌套Recycler View嵌套冲突解决
- 【Android】ScrollView 嵌套 ScrollView ,嵌套滚动的TextView
- ScrollView嵌套Gridview或者listview滚动问题
- ScrollView嵌套GridView的滚动事件解决
- android scrollview 嵌套自适应 listview 自动滚动
- scrollview嵌套listview,listview不滚动问题
- ScrollView嵌套TextView,让TextView可以滚动
- ScrollView嵌套ListView滚动冲突的解决方案
- ScrollView嵌套ListView 两者滚动互不影响
- Android ScrollView嵌套ScrollView滚动的问题解决办法
- Android ScrollView嵌套ScrollView滚动的问题解决办法
- 友盟分享集成过程
- Servlet配置web.xml后 tomcat无法启动
- Java并发包之CountDownLatch
- JAVA数据结构和算法:第六章(树)
- Unity入门操作_UGUI_事件_030
- ScrollView嵌套可滚动View
- Java并发包之Semaphore信号量
- 监控指标数据采集和展示
- Ubuntu系统MySQL嵌入式开发入门(C++)
- The problem of Zigzag pattern
- 数据库优化
- P1014 Cantor表
- Recycler View
- CMake快速入门教程:实战