1. 程式人生 > >WebView 禁止上下左右滑動

WebView 禁止上下左右滑動

最近做專案需要使用到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)