最近项目中刚好用到这个,最后我也是借鉴了一个朋友的方法,所以班门弄斧,就贴出来大家一起学习学习,很实用。先上传张效果图:
1.java文件中代码部分
private void showDialog(final HashMap<String, String> info) {
final Context context = new ContextThemeWrapper(HomeActivity.this, R.style.custom_dialog);//自定义一个style
//借助dialog的样式,做简单修改
final AlertDialog dialog = new AlertDialog.Builder(context).create();
// dialog.setOnCancelListener(new OnCancelListener() {
// @Override
// public void onCancel(DialogInterface dialog) {
// mLog.info("isOptional: " + info.get("isOptional"));
// if (info.get("isOptional").equals("0")) {
// ActivityStackManager.finish();
// } else {
// dialog.dismiss();
// }
// }
// });
// dialog.setTitle("");
dialog.show();
final Window window = dialog.getWindow();
final WindowManager m = getWindowManager();
final Display d = m.getDefaultDisplay(); // 为获取屏幕宽、高
final WindowManager.LayoutParams p = window.getAttributes(); // 获取对话框当前的参数值
//设置显示dialog处于屏幕的位置--宽度+高度
p.height = (int)(d.getHeight() * 0.5); // 高度设置为屏幕的0.5
p.width = (int)(d.getWidth() * 0.8); // 宽度设置为屏幕的0.8
window.setAttributes(p); // 设置生效
window.setContentView(R.layout.upgrade_dialog); //设置自定义的布局内容
//获取到自定义的控件,设置相关属性和监听事件等。
final TextView curVersion = (TextView)window.findViewById(R.id.cur_version);
curVersion.setText(AppUtils.getVersionString(getApplicationContext()));
final TextView newVersion = (TextView)window.findViewById(R.id.new_version);
newVersion.setText(info.get("version"));
2.然后设置样式
<!-- 自定义dialog -->
<style name="custom_dialog" parent="@android:Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:backgroundDimEnabled">true</item>
</style>
3.这个dialog里面显示的内容完全是自定义的布局里面的东西,所以就自己去定义吧。
4.在需要showDialog的地方,调用这个showUpdateDialog()方法就好了。