WebView 禁止上下左右滑動
阿新 • • 發佈:2019-01-03
最近做專案需要使用到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) 來控制其滾動到某個位置。