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();

(0)

相关推荐