最近做项目需要使用到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)
- 禁止上下左右滚动:在onScrollChanged中调用 scrollTo(0,0)