webview轮播图与Android滑动冲突的解决办法

zz/2023/9/24 20:50:54

在Android中我们经常需要左右滑动,其中内嵌的web页面也有滑动动作。轮播图举例:需要左右翻页时,会触发Android中的ViewPager导致翻页到另一个页面轮播图翻页翻不动,或失效。但是由于安卓是父,而Web是子。在Web中不论你做什么处理,都管不了父窗口的事情,所以需要Android做处理,而前端最好能给Android传递轮播图的位置,让这块区域的viewPager失效。

上代码:

前端用的Vux框架,@on-get-height会获取当前轮播图的高度。

<template><div @click="navigation"><group-title></group-title><swiper id="swiper" @on-get-height="getByheight"  :show-dots="true" style="width:100%;margin:0 auto;" :aspect-ratio="400/800" loop auto :list="demo07_list"  :index="demo07_index" @on-index-change="demo07_onIndexChange" ></swiper><!--<p>current index: {{demo07_index}}</p>--></div>
</template>//挂载进Window全局中,给Adroid调用,
window.downState=function(msg){android.getPagerDesc(msg)
}
export default {name:'pet_home',data(){return{demo07_list:[{img: '../../../static/lunbotu1.png',title: ''}, //轮播图{img: '../../../static/img1.png',title: ''},{img: '../../../static/lunbotu1.png',title: ''}],demo07_index: 0,//轮播图Index角标swiperItemIndex: 1,Slide:'',}},methods: {demo07_onIndexChange (index) {this.demo07_index = index},getByheight(res){//获取轮播图宽高//  var swiperWidth = document.getElementById("swiper").clientWidth+"px"var swiperHeight = resthis.Slide=swiperHeight},},watch:{//因为高度生命周期的问题,我们必须要在获取到高度并赋值给Data变量,在传递给AndroidSlide(value){//监听Slide的值变动,不为空时调用downState推个Androidif(value!=""){//		   		console.log(value)downState(value)}},},
}

Android代码:

这个的意思就是,我要让区域内距离顶部大于69px,小于轮播图高度的区域内的viewPager滑动失效,不在监听这里的滑动效果。

注:因为我头部距离顶部是固定的70px ,如果不是固定,则需要获取他的高度,这个也借鉴了别人的处理方式,只是把这个地方简化了一点。大致这样轮播图的冲突就没有了。

webView.setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {//获取y轴坐标float y = event.getRawY();switch (event.getAction()) {case MotionEvent.ACTION_DOWN://如果触摸点的坐标在轮播区域内,则由webview来处理事件,否则由viewpager来处理if (y > 69 && y < (69 + Integer.valueOf(height.split("px")[0]))) {webView.requestDisallowInterceptTouchEvent(true);}else{webView.requestDisallowInterceptTouchEvent(false);}break;case MotionEvent.ACTION_UP:break;case MotionEvent.ACTION_MOVE:break;}return false;}
});

 

本来开始想的处理方案是:看用java能不能获取到组件Dom节点,直接让Dom节点失效viewpager。可惜没找到jar包。

 

如果有更好的处理方式 欢迎评论 留言。


http://www.ngui.cc/zz/2543044.html

相关文章

Android:webview取消滚动条

webView.setHorizontalScrollBarEnabled(false);//水平不显示 webView.setVerticalScrollBarEnabled(false); //垂直不显示 ​​​​​​​

MongoDB分片集群命令

#添加分片 db.runCommand( {addshard : "shardWlinkRep1/127.0.0.1:37017,127.0.0.1:37017,127.0.0.1:37017",name:"shard1"} ) #删除分片 db.runCommand( { removeShard : "shard2"} ) (1)如果balance开始&#xff0c;查看是否正在有数据迁移…

PayPal支付开发(Vue.js -- node.jsKoa2)

补充一下&#xff1a;想选择Paypal做支付的&#xff0c;慎选&#xff0c;由于网络服务器网速原因访问部分网站网速极其的慢&#xff0c;他的支付网站还设置timeout过时&#xff0c;导致跳转到他的支付页 资源都没全部拉取下来就timeout掉了。有段时间情况好一点&#xff0c;有段…

Mongodb设置数据过期自动删除

1.今天要做一个验证码一样的东西&#xff0c;让用户通过校验。 下面这段是设置以createTime为过期时间的索引&#xff0c;意思就是一条数据以其中createTime的字段时间为准&#xff0c;超过该字段时间将这条数据删除。 {expireAfterSeconds:0} 设置为0 时间一到立马删除。 …

Ubuntu 18.04服务器安装MongoDB

1.导入包管理系统使用的公钥。 wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add - 执行此命令&#xff0c;如果收到的是OK就是正常的。但是&#xff0c;如果收到指示gnupg未安装的错误&#xff0c;则可以&#xff1a; //如果反馈不是OK 则…

Crypto aes-128-cbc加密

1.crypto &#xff08;node.js&#xff09; 1.1 加密 var key 2cef781a9c0411eb var str JSON.stringify({ "ip": "192.168.12.1", "mac": "80:3F:5D:0E:04:2B", "wan_ip": "0.0.0.0", "internet"…

Electron: 渲染进程开启子线程 Worker

在Vue中需要使用例外的线程去执行轮询的任务&#xff0c;这里以获取网卡信息为例。 注&#xff1a;这里是在Electron中使用的&#xff0c;可以使用Node.js实例 “child_process”&#xff0c;如果是纯Vue工程无法使用Node实例。 1.创建一个renderer.js文件,放在public静态文…

vue前端遮罩层问题

在Vue的开发中&#xff0c;一旦我们用到对话框&#xff0c;经常出现的问题是对话框被遮罩层挡住&#xff0c;无论是Element-UI dialog还是bootstrap的Modal&#xff0c;如下图所示&#xff1a;造成这个问题的原因是对话框组件的父元素的position有fixed或者relative值&#xff…

字符串常用的14种方法,记得关注收藏

字符串常用的14种方法&#xff0c;记得收藏 1、将字符串转换成char数组 ToCharArray() 2、将char数组转换成字符串 new string(char[]); 3、将字符串转换成小写 ToLower() 4、将字符串转换成大写 ToUpper() 5、比较两个字符串的时候&#xff0c;忽略大小写 S1.Equals(s2,…); 6…

关于数据库的查询(交叉连接,内连接,外连接-左外连接,外连接-右外连接,全连接)

1.交叉连接 select * from 表1 as 别名1 cross join 表2 as 别名2 说明1&#xff1a; 不带WHERE条件子句&#xff0c;它将会返回被连接的两个表的笛卡尔积&#xff0c;返回结果的 行数等于两个表行数的乘积 2.内连接 select * from 表1 as 别名1 inner join 表2 as 别名2 …