android scollview嵌套webview底部空白,高度无法自适应解决

最近要做一个页面,需要scollview嵌套webview,怎么嵌套,怎么解决焦点和touch时间冲突,网上一大堆,这里就不赘述了

但是发现webview从一个高度很高的网页加载一个高度很低的网页的时候,高度无法自适应了,造成底部会有一大片的空白,解决方案找到了挺多,描述一下


1.google建议不要在scrollview中使用webview,但是毕竟无法避免,产品的需求

2.每次加载新的url的时候remove掉旧的webview,重新加入一个新的webview去加载这个新url,这种方案是可行的,但是毕竟不太好,效率不高

3.js注入


mWebView.setWebViewClient(new WebViewClient() {
			@Override
			public void onPageFinished(WebView view, String url) {
				mWebView.loadUrl("javascript:App.resize(document.body.getBoundingClientRect().height)");
				super.onPageFinished(view, url);
			}
		});
		mWebView.addJavascriptInterface(this, "App");


@JavascriptInterface
	public void resize(final float height) {
		getActivity().runOnUiThread(new Runnable() {
			@Override
			public 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 instance
mArticleWebView.loadUrl(Constants.ASSETS_EMPTY);
// load real data
mArticleWebView.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,webView,ScollView)