博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ListView嵌套webView 事件冲突解决
阅读量:6508 次
发布时间:2019-06-24

本文共 2452 字,大约阅读时间需要 8 分钟。

如图,红色部分为WebView,作为ListView头部存在,测试视频(h5)要左右滑动,ListView要上下滑动,保证视频控件和下面评论部分可以显示,但是这个时候就存在WebView横向滑动和ListView竖向滑动之间的冲突。

解决如下:

mWebView.setOnTouchListener(new View.OnTouchListener() {            @Override            public boolean onTouch(View v, MotionEvent event) {                //在触发时回去到起始坐标                float x = event.getX();                float y = event.getY();                switch (event.getAction()) {                    case MotionEvent.ACTION_DOWN:                        //将按下时的坐标存储                        downX = x;                        downY = y;                        break;                    case MotionEvent.ACTION_MOVE:                        //获取到距离差                        float dx = x - downX;                        float dy = y - downY;                        //防止是按下也判断                        if (Math.abs(dx) > 8 && Math.abs(dy) > 8) {                            //通过距离差判断方向                            int orientation = getOrientation(dx, dy);                            switch (orientation) {                                case 'r':                                    action = "右";                                    listView.requestDisallowInterceptTouchEvent(true);                                    break;                                case 'l':                                    action = "左";                                    listView.requestDisallowInterceptTouchEvent(true);                                    break;                                case 't':                                    action = "上";                                    break;                                case 'b':                                    action = "下";                                    break;                            }                        }                        break;                    case MotionEvent.ACTION_CANCEL:                    case MotionEvent.ACTION_UP:                        listView.requestDisallowInterceptTouchEvent(false);                        break;                }                return false;            }        });
/**     * 根据距离差判断 滑动方向     *     * @param dx X轴的距离差     * @param dy Y轴的距离差     * @return 滑动的方向     */    private int getOrientation(float dx, float dy) {        if (Math.abs(dx) > Math.abs(dy)) {            //X轴移动            return dx > 0 ? 'r' : 'l';        } else {            //Y轴移动            return dy > 0 ? 'b' : 't';        }    }

完美解决,横向 H5滑动不受到影响,竖向滑动也不会受到影响。

 

转载地址:http://plzfo.baihongyu.com/

你可能感兴趣的文章
C# DataGridVie利用model特性动态加载列
查看>>
IPv6 地址分类
查看>>
<%@ include %>指令和<jsp:include>区别
查看>>
因为文件组 'PRIMARY' 已满 解决办法
查看>>
Flume 读取实时更新的日志文件
查看>>
HDU 2049
查看>>
《Spring1之第十次站立会议》
查看>>
Unity Shader 噪声消融特效 - 剑灵死亡特效
查看>>
Eclipse 自动生成 Ant的Build.xml 配置文件
查看>>
添加一条信息到列表,如果重复就替换,
查看>>
C#基础第五天
查看>>
python 小数相加报错 invalid literal for int() with base 10
查看>>
【ubuntu】linux链接库
查看>>
uva 12325 枚举暴力 b
查看>>
多线程问题(JVM重排序)
查看>>
LeetCode 459 Repeated Substring Pattern
查看>>
POJ 3268 Silver Cow Party
查看>>
Android Camera开发:使用TextureView和SurfaceTexture预览Camera 基础拍照demo
查看>>
EMLS项目推进思考
查看>>
Eclipse快捷键 10个最有用的快捷键
查看>>