当前位置: 首页 > news >正文

ListView嵌套webView 事件冲突解决

如图,红色部分为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滑动不受到影响,竖向滑动也不会受到影响。

 

相关文章:

  • mysql的binlog太大太多占用大量磁盘
  • MD5
  • C++实践参考——职员有薪水了
  • Linux下的远程桌面工具—tigervnc
  • 利用Yii框架中的collections体验PHP类型化编程
  • 盘点那些不知名却常用的 Git 操作
  • Linux学习笔记1
  • C# 客户端服务器开发 异步实现
  • 打印mac地址
  • (转)EXC_BREAKPOINT僵尸错误
  • phantomjs技巧之将html页面转换为pdf文件
  • 完毕port(CompletionPort)具体解释 - 手把手教你玩转网络编程系列之三
  • 入门到进阶:最全面Vim快捷键键位图
  • github帐号及文章选题
  • 【Datastage】NULL VALUE TO A NOT NULL VALUE
  • CSS实用技巧
  • Django 博客开发教程 16 - 统计文章阅读量
  • Facebook AccountKit 接入的坑点
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • Laravel 中的一个后期静态绑定
  • maven工程打包jar以及java jar命令的classpath使用
  • nginx 配置多 域名 + 多 https
  • supervisor 永不挂掉的进程 安装以及使用
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • vue脚手架vue-cli
  • Windows Containers 大冒险: 容器网络
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 机器学习中为什么要做归一化normalization
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 阿里云重庆大学大数据训练营落地分享
  • ​520就是要宠粉,你的心头书我买单
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • # .NET Framework中使用命名管道进行进程间通信
  • #AngularJS#$sce.trustAsResourceUrl
  • #微信小程序(布局、渲染层基础知识)
  • (pojstep1.3.1)1017(构造法模拟)
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (ZT)薛涌:谈贫说富
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .net 托管代码与非托管代码
  • .NET 药厂业务系统 CPU爆高分析
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .net程序集学习心得
  • .Net中的集合
  • @四年级家长,这条香港优才计划+华侨生联考捷径,一定要看!
  • [Android] Android ActivityManager
  • [BUUCTF 2018]Online Tool(特详解)