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