因为上一篇文章讲的是关机弹出框,这一章我们也说一下关于dialog的一些自定义的使用,如果只是普通的方法的话,我这里就简要概述,因为其他人的写的比我更好。
我们在使用dialog的时候,如果现在我不想要dialog有确定或者取消,应该怎么去做呢。
这个是一个普通的dialog
AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this)
.setTitle("我是原始标题")
.setMessage("我是原始的message")
.setPositiveButton("entar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
})
.setNegativeButton("cencle", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
alert.show();
上面的这个可以说是我们最基本的dialog
-------------------------------------------------分割线-----------------------------------------------------
如果想去掉确定取消
AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this)
.setTitle("我是原始标题")
.setMessage("我是原始的message");
alert.show();
只需要在创建dialog的时候不加入dialog相关的确定取消就可以
如果你还不想让别人通过按返回退出这个dialog
可以设置这个属性
alert.setCancelable(false);
设置为false,按返回键不能退出。默认为true。
-------------------------------------------------分割线-----------------------------------------------------
内容的居中
AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this)
.setTitle("我是原始标题");
TextView msg = new TextView(this);
msg.setText("我是自定义的dialog的message");
msg.setPadding(10, 10, 10, 10);
msg.setGravity(Gravity.CENTER);
msg.setTextSize(18);
alert.setView(msg);
alert.setCancelable(false);
alert.show();
这里我把setCancelable设置成了false,没办法取消这个dialog
-------------------------------------------------分割线-----------------------------------------------------
标题的居中
AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this)
.setMessage("我是原始的message");
TextView title = new TextView(this);
title.setText("我是自定义的dialog的title");
title.setPadding(10, 10, 10, 10); //边距
title.setGravity(Gravity.CENTER); //位置
title.setTextColor(getResources().getColor(R.color.bg_image)); //字体的颜色
title.setTextSize(23); //字体的大小
alert.setCustomTitle(title); //设置字体
alert.show();
其实标题的居中和内容的居中没有多大的区别,只是在对不同的字体进行设置。
-------------------------------------------------分割线-----------------------------------------------------
布局的改动
WindowManager.LayoutParams params = sConfirmDialog.getWindow().getAttributes();
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
int width = wm.getDefaultDisplay().getWidth();
params.width = width / 2;
sConfirmDialog.getWindow().setAttributes(params);
这里我得到窗口的大小,然后在设置到我们的dialog上面。
这里只是对width进行了设置,得到窗口的大小然后除以2就是dialog的横向距离
例如我不指定dialog,然后整个布局就变成了这样子。
代码如下
WindowManager.LayoutParams params = getWindow().getAttributes();
WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
int width = wm.getDefaultDisplay().getWidth();
params.width = width / 2;
getWindow().setAttributes(params);
总结
dialog还有其他的属性,有兴趣的读者可以自己去探索。
源码相关的下载地址
链接:https://pan.baidu.com/s/1_GQNhKOVRh1yHP4hS93ZkA 密码:tigt