標籤:android webview scollview
最近要做一個頁面,需要scollview嵌套webview,怎麼嵌套,怎麼解決焦點和touch時間衝突,網上一大堆,這裡就不贅述了
但是發現webview從一個高度很高的網頁載入一個高度很低的網頁的時候,高度無法自適應了,造成底部會有一大片的空白,解決方案找到了挺多,描述一下
1.google建議不要在scrollview中使用webview,但是畢竟無法避免,產品的需求
2.每次載入新的url的時候remove掉舊的webview,重新加入一個新的webview去載入這個新url,這種方案是可行的,但是畢竟不太好,效率不高
3.js注入
mWebView.setWebViewClient(new WebViewClient() {@Overridepublic void onPageFinished(WebView view, String url) {mWebView.loadUrl("javascript:App.resize(document.body.getBoundingClientRect().height)");super.onPageFinished(view, url);}});mWebView.addJavascriptInterface(this, "App");
@JavascriptInterfacepublic void resize(final float height) {getActivity().runOnUiThread(new Runnable() {@Overridepublic void run() {//Toast.makeText(getActivity(), height + "", Toast.LENGTH_LONG).show();mWebView.setLayoutParams(new LinearLayout.LayoutParams(getResources().getDisplayMetrics().widthPixels, (int) (height * getResources().getDisplayMetrics().density)));}});}
記住該resize方法一定要上面那麼寫,寫成
mWebView.getLayoutParams().height = (int) (height * getResources().getDisplayMetrics().density);
這樣是無法成功的,看來寬度也是有影響的
還有一些網上的另外解決方案,我試了一下,都無法成功
4.在從高網頁載入低網頁的時候,先載入一個空內容,接著立馬做相關的處理操作(比如載入新的網頁,更改字型等),
// load empty data to shrink the WebView instancemArticleWebView.loadUrl(Constants.ASSETS_EMPTY);// load real datamArticleWebView.loadDataWithBaseURL(null, data, "text/html", "utf-8", null);
Constants.ASSETS_EMPTY 僅僅只是一個String子串,標識該空網頁的位置,所以該變數可以為 "file:///android_asset/Empty.html".
試了一下,也是不好用的,不知道時不時我的操作問題,原文連結http://vision-apps.blogspot.hk/2012/08/android-webview-tips-tricks.html
5.修改setting屬性
wv.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);wv.setVerticalScrollBarEnabled(false);wv.setVerticalScrollbarOverlay(false);wv.setHorizontalScrollBarEnabled(false);wv.setHorizontalScrollbarOverlay(false);
一樣不好用,原文連結http://blog.csdn.net/wht3xr/article/details/21004053
6.一些人的討論:http://stackoverflow.com/questions/15546416/how-to-shrink-webview-size-dynamically-according-to-its-content
總結了一下,第3中方法還是比較好用的,如果大神還有其他解決方案,希望能告訴我
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
android scollview嵌套webview底部空白,高度無法自適應解決