今天在某一项目里,发现一页面里内嵌X5WebView,会有奇怪的高频率闪烁问题。经过跟踪发现,是因为控件里设置了wrap_content。
经过几次修改,发现以下做法可改掉这个问题:
1. 在xml里预先给X5WebView设置一个高度,例:
android:layout_width="match_parent"
android:layout_height="150dp"
2.当页面加载完毕后,重新设置高度:
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView webView, String s) {
webView.loadUrl(s);
return true;
}
@Override
public void onPageFinished(WebView webView, String s) {
super.onPageFinished(webView, s);
int height = webView.getContentHeight();
if (height > 0) {
ViewGroup.LayoutParams params = webView.getLayoutParams();
params.height = DensityUtil.dp2px(Activity.this, height);;
webView.setLayoutParams(params);
}
}
});
这样就不会闪烁了。
网友评论