最近做項目需要使用到webview加載網(wǎng)頁睬涧,需要的內(nèi)容都在網(wǎng)頁的最上方部分舱权,但webview 加載的時候會把網(wǎng)頁下面空白區(qū)域頁加載進來矗晃,滑動上去就看不到需要的部分了, 剛開始想到兩種解決思路:
1.通過設(shè)置網(wǎng)頁的高度為所需要內(nèi)容的高度.
2.通過對webview 設(shè)置.
第一種:通過設(shè)置網(wǎng)頁的高度為所需要內(nèi)容的高度.
先貼出html 中的內(nèi)容:
<body>
<div id="root">
<div id="alphaTab" data-file="files/WithoutFiliman.gp5" ></div>
</div>
</body>
當把html 的 bady 的高度設(shè)置為 alphaTab 的高度時,也并沒有什么效果。
第二種:通過對webview 設(shè)置.
開始時候首先找webview現(xiàn)有的API能不能實現(xiàn)宴倍,找到一下的幾個相關(guān)滾動的API:
webView.setScrollContainer(false);
webView.setVerticalScrollBarEnabled(false);
webView.setHorizontalScrollBarEnabled(false);
雖說上面的都帶有scroll 张症,但并不是與滾動相關(guān)的,還是無法解決問題鸵贬。
后來就想著重寫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 滾動的時候回調(diào),在方法中我們可以調(diào)用scrollTo(x,y) 來控制其滾動到某個位置阔逼。