问题描述
需求是这样的,viewpager内部嵌套多个不同的网页,滑动切换显示不同html5网页,想法是好的,但是遇到了一些问题。其中html网页中也会有一些类似viewpager的可横向滑动控件,当你尝试滑动html中的有滑动效果的控件时,发现整个外部viewpager都跟着滑动了,直接切换到另一个网页,哈哈哈,好棒
解决办法
解决办法有三个,其中第一个办法最苯,第二个还可以,但是略麻烦,第三个办法最完美,目前没发现什么问题,等不及的可以直接看第三个方法
方法1
将屏幕分为左中右三个区域,当滑动中间部分的时候禁掉外层viewpager的滑动,具体操作是在webview的ontouchevent中,通过判断触摸区域调用requestDisallowInterceptTouchEvent(true),当为true的时候,触摸事件就被webview拦截,不会传向父控件,viewpager自然不会滑动了,当然这么做,用户使用起来的话会非常蛋疼,而且现在很多手机都有全面屏幕手势操作,翻个页还不小心退出应用了,这不是搞笑的嘛,这种方法极其不推荐使用,还不如不滑动翻页,直接点tab了。
方法2
第二种方法是通过js和android之间通信,js获取html网页中可滑动控件的位置,然后传给android,安卓还是在webview的ontouchevent事件中判断触摸的位置,如果触摸在滑动控件上,就通过requestDisallowInterceptTouchEvent(true)拦截事件,viewpager就不能滑动了,听上去效果是比上个方法好了一点,至少不用点着viewpager的边缘才能滑动了,但是实际使用中还会有一些问题,比如页面刚加载出来的1s之内,可能坐标位置还没返回,这时滑动html中的viewpager还是会整屏滑动的,而且工作量也有点太大了,还好最后没采用这种办法。
方法3
上面两个方法说的都比较简略,之前在网上搜索到的大部分是那两种方法,第