在实际项目中如果使用webview加载html。
当出现WebView底部大片空白时,可以尝试以下方法:
1、在webview加载完成时,重新设置他的大小
webview.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
//这个是一定要加上那个的,配合scrollView和WebView的height=wrap_content属性使用
int w = View.MeasureSpec.makeMeasureSpec(0,
View.MeasureSpec.UNSPECIFIED);
int h = View.MeasureSpec.makeMeasureSpec(0,
View.MeasureSpec.UNSPECIFIED);
//重新测量
webview.measure(w, h);
super.onPageFinished(view, url);
}
});
2、在webview加载完成时,给html注入js,并重新设置webview大小
webview.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
webview.loadUrl("javascript:App.resize(document.body.getBoundingClientRect().height)");
super.onPageFinished(view, url);
}
});
webview.addJavascriptInterface(this, "App");
@JavascriptInterface
public void resize(final float height) {
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)));
}
});
}
UNSPECIFIED 未指明模式父布局不限制子布局的大小,对其不做任何限制。
EXACTLY 精确模式父布局可以确定子布局的最终大小。
AT_MOST 至多模式父布局确定不了子布局的最终大小,但是子布局的大小不能超过父布局给出的大小