Android中WebView用来加载html页面,自带滑动效果。ScrollView同样也是自带滑动效果,在项目中如果需要WebView和一些其他view比如TextView一起滑动的话就必须外面嵌套一层ScrollView,这时问题就来了,嵌套之后ScrollView的滑动和WebView的滑动就会有冲突,WebView的滑动不流畅。下面就是解决方案:
自定义一个ScrollView
public
class
MyScrollView
extends
ScrollView
{ p
rivate
G
estureDetector
mGestureDetector; Vi
ew.O
n
TouchListener mGestureListener; publ
ic MyS
c
rollView(Con
t
ext con
text, Attr
ibuteSet att
rs) { super
(cont
ext, attrs); mGestureDetector = new
G
e
stu
r
eDetector(conte
xt, new YS
cro
l
lDetector());
setFadingEdgeLength(0);
}
@Override
public
bool
ean on
InterceptTouchEvent(MotionEvent
ev) {
return super
.onInt
e
rceptT
ouchEvent(ev) && mGestureD
et
ector.onTouchEven
t
(ev); } // Return false
i
f
we're
scrol
l
in
g in the x direct
io
n class YScrollDet
ector
extends SimpleO
nGestureL
istener { @Override
pub
lic boole
an onS
croll(
MotionEvent e1, Mo
tionEvent e
2, fl
oat distanc
eX, float distanceY) { if (Math.abs(distan
ce
Y)
> M
a
th.abs(distance
X
)
) {
return true;
}
return false; }
}}
上面代码中onInterceptTouchEvent方法是关键,重写这个方法使如果ScrollView有touch事件时不被拦截,这样只要ScrollView有touch事件优先处理,这样就保证了滑动的流畅。