版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Hana_one/article/details/81348049
最近做项目需要使用到webview加载网页,需要的内容都在网页的最上方部分,但webview 加载的时候会把网页下面空白区域页加载进来,滑动上去就看不到需要的部分了, 刚开始想到两种解决思路:
1.通过设置网页的高度为所需要内容的高度.
2.通过对webview 设置.
第一种:通过设置网页的高度为所需要内容的高度.
先贴出html 中的内容:
<body>
<div id="root">
<div id="alphaTab" data-file="files/WithoutFiliman.gp5" ></div>
</div>
</body>
当把html 的 bady 的高度设置为 alphaTab 的高度时,也并没有什么效果。
第二种:通过对webview 设置.
开始时候首先找webview现有的API能不能实现,找到一下的几个相关滚动的API:
webView.setScrollContainer(false);
webView.setVerticalScrollBarEnabled(false);
webView.setHorizontalScrollBarEnabled(false);
虽说上面的都带有scroll ,但并不是与滚动相关的,还是无法解决问题。
后来就想着重写webview ,终于用下面的方法解决了问题:
public class MyWebView extends WebView{
public MyWebView(Context context) {
super(context);
}
public MyWebView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyWebView(Context context, AttributeSet attrs, int defStyleAttr){
super(context, attrs, defStyleAttr);
}
//重写onScrollChanged 方法
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);
scrollTo(l,0);
}
}
可以看到上面重写了onScrollChanged 方法 , 当webview 滚动的时候回调,在方法中我们可以调用scrollTo(x,y) 来控制其滚动到某个位置。