您的位置:首页 > 移动开发

Android WebView高度显示错乱的问题

2015-11-27 14:43 253 查看
今天在改测试姐姐们提出的一个bug时,发现WebView有个高度显示问题,至今还不清楚为什么会出现这个问题(有时间去源码看一下),但问题总算解决了。把这个问题和解决方法记录下来与大家分享!

其实解决办法很简单,就是重新测量绘制webview的高,接下来贴上具体操作代码~~

public class aaa extends Activity {
private WebView webView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.aaa_activity);
webView = (WebView) findViewById(R.id.webview);
setWebView();
webView.addJavascriptInterface(this, "MyApp");
}

/**
* 设置WebView
*/
public void setWebView() {
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true); // 设置支持javascript脚本
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);// 使用当前WebView处理跳转
return true;// true表示此事件在此处被处理,不需要再广播
}

@Override
public void onPageFinished(WebView view, String url) {
webView.loadUrl("javascript:MyApp.resize(document.body.getBoundingClientRect().height)");
super.onPageFinished(view, url);
}
});
}

@JavascriptInterface
public void resize(final float height) {
runOnUiThread(new Runnable() {
@Override
public void run() {
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(getResources()
.getDisplayMetrics().widthPixels, (int) (height * getResources()
.getDisplayMetrics().density));
params.setMargins(15, 0, 10, 0);
webView.setLayoutParams(params);
}
});
}
}

到这 基本解决办法就是这样,大家在自己开发的时候万一也遇到这个问题可以参考一下哈~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: