最近做项目需要使用到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)
来控制其滚动到某个位置。
禁止左右滚动:在onScrollChanged中设置 scrollTo(0,y) 禁止上下滚动:在onScrollChanged中调用
scrollTo(x,0)