关于scrollview中嵌套横向滑动控件时产生的体验不佳问题
来源:互联网 发布:约瑟夫问题c语言详解 编辑:程序博客网 时间:2024/05/26 17:46
问题:通常在滑动横向的控件时如viewpager或者横向的listview亦或是最新的recycleview,都会产生稍微滑动的有偏差,会导致 scrollview的上下滑动,体验特别不佳
处理:在滑动的时候假如scrollview的上下收到了触发,则返回到子布局中去,故重写scrollview如下:
public class ScrollView1 extends ScrollView{ private boolean canScroll; private GestureDetector mGestureDetector; View.OnTouchListener mGestureListener; public ScrollView1(Context context, AttributeSet attrs) { super(context, attrs); mGestureDetector = new GestureDetector(new YScrollDetector()); canScroll = true; } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { if(ev.getAction() == MotionEvent.ACTION_UP) canScroll = true; return super.onInterceptTouchEvent(ev) && mGestureDetector.onTouchEvent(ev); } class YScrollDetector extends GestureDetector.SimpleOnGestureListener { @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { if(canScroll) if (Math.abs(distanceY) >= Math.abs(distanceX)) canScroll = true; else canScroll = false; return canScroll; } }
后来多次测试,发现有问题,上下有的时候划不动了,故改成如下:
public class ScrollView1 extends ScrollView{ private float xDistance, yDistance, xLast, yLast; public ScrollView1(Context context) { super(context); } public ScrollView1(Context context, AttributeSet attrs) { super(context, attrs); } public ScrollView1(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: xDistance = yDistance = 0f; xLast = ev.getX(); yLast = ev.getY(); break; case MotionEvent.ACTION_MOVE: final float curX = ev.getX(); final float curY = ev.getY(); xDistance += Math.abs(curX - xLast); yDistance += Math.abs(curY - yLast); xLast = curX; yLast = curY; /** * X轴滑动距离大于Y轴滑动距离,也就是用户横向滑动时,返回false,ScrollView不处理这次事件, * 让子控件中的TouchEvent去处理,所以横向滑动的事件交由ViewPager处理, * ScrollView只处理纵向滑动事件 */ if (xDistance > yDistance) { return false; } } return super.onInterceptTouchEvent(ev); }}
1 0
- 关于scrollview中嵌套横向滑动控件时产生的体验不佳问题
- 解决ScrollView嵌套RecyclerView(横向)或ListView(横向)时,横向滑动不顺畅的问题。
- ios7中使用scrollview来横向滑动图片,自动产生偏移竖向的偏移 问题
- 关于viewpager中嵌套的fragment中的listview的横向滑动的滑动冲突的问题。
- 关于ScrollView嵌套滑动控件出现的内容显示不全问题
- 关于ScrollView中嵌套listview焦点滑动问题 解决
- 关于ScrollView中嵌套listview焦点滑动问题 解决
- ScrollView中若嵌套有滑动的控件(如:WebView,ListView或GridView)时的焦点问题
- ScrollView中若嵌套有滑动的控件(如:WebView,ListView或GridView)焦点问题
- 关于scrollView中嵌套的ListView或者自定义view的焦点滑动问题
- 关于ViewPager被嵌套在ScrollView中不显示以及滑动冲突的问题
- 横向滑动的 ScrollView
- 解决ScrollView中嵌套EditText无法滑动的问题
- Android ScrollView中嵌套ListView,滑动冲突问题的解决
- 解决ScrollView中嵌套RecycleView不能滑动的问题
- Android ScrollView中嵌套ListView,滑动冲突问题的解决
- 解决VerticalViewPager中嵌套ScrollView滑动问题
- ScrollView中嵌套ListView滑动问题
- 串口 console tty 串口驱动
- ios UITextField 设置默认提示
- 对付空中无线电波读取人的思想的方法
- echo使用!
- 枚哥词典01
- 关于scrollview中嵌套横向滑动控件时产生的体验不佳问题
- Java覆盖equals (入门级)
- 基于fl2440 内核linux3.0添加dm9000支持
- 【springmvc+mybatis项目实战】杰信商贸-33.出口报运修改+报运货物批量展现-批量修改控件2
- 一个关于STM8中断应用异常的话题
- 黑马程序员_Java多态性
- EXT 横排列表单样例
- to_char
- Linux下基于bitnami的Redmine安装部署以及结合Subversion的设置