Android Dialog 中WebView显示样式异常
关于在Dialog 中添加WebView的注意事项
1.所有自定义dialog中的公共的做法,设置Window属性等要在show()方法后面。
2.关于H5某些样式失效,是因为loadUrl 在show方法之前进行,也就是预加载。因为show方法的时候会重新对布局属性进行更改。
如:H5 生成图片的Base64给App, 这个时候H5图片的生成 样式就会出现问题,所以我们需要先show 一遍,接着调用WebView的loadUrl方法,接着直接隐藏 hide() 方法。 不能调用show紧着调用dismiss(),这样就没有任何意义,可以在网页加载完成之后取消hide
public void cancleHide() { if (getWindow() != null) { int visibility = getWindow().getDecorView().getVisibility(); if (visibility == View.GONE) { super.show(); dismiss(); } } }
下面是一个CSDN上的案例:
笔记:dialog渲染WebView不能显示
Dialog 用来渲染WebView做视频广告,遇到了一个很奇怪的问题,WebView的js生效,但是WebView没有显示。如果先调用show()再加载webView的话就可以显示,但是广告做的是预加载,因此不能先show(),要把广告的内容加载完成再show.()。
最后我是这样解决问题的,先调用一次show(),再调用一次hide(),然后再加载内容,内容加载完成再次调用show(),完美解决问题。
mDialog = new Dialog(mContext,R.style.Dialog_Translucent_NoTitle);
mDialog.setCancelable(false);
Window window = mDialog.getWindow();
window.setBackgroundDrawable(null);
window.setDimAmount(0f);
window.requestFeature(Window.FEATURE_NO_TITLE);
window.setContentView(mFrameLayout,layoutParams);
WindowManager.LayoutParams lp = window.getAttributes();
lp.width = width;
lp.height = height;
window.setAttributes(lp);
mDialog.show();
//mDialog.getCurrentFocus();
mDialog.hide();
//------------mFrameLayout做内容的加载-----------
mDialog.show();
