Android 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)

- 禁止上下左右滾動:在onScrollChanged中調用 scrollTo(0,0)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM