android dialog的内容和标题的居中或者布局的更动

2018-08-28  本文已影响0人  不吃鱼的猫_992d

因为上一篇文章讲的是关机弹出框,这一章我们也说一下关于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

上一篇下一篇

猜你喜欢

热点阅读