android dialog 简书,Android自定义Dialog

在开发中,我们经常会用到一些自定义布局的对话框。每次自己写的时候,经常会遇到一些细小的问题需要上网来解决,所以干脆把经常遇到的几个问题总结了一下,这样就可以愉快自定义dialog了。本文主要总结的问题有:1.对话框的大小、位置 2.对话框的主题

自定义dialog的大小、位置

自定义对话框的大小

对话框的大小的设置有两种方法:

1.通过WindowManager.LayoutParams来设置,具体请看如下的代码:

` Dialog dialog=new Dialog(this,R.style.dialog);

dialog.setContentView(R.layout.layout_dialog);

//获取到当前Activity的Window

Window dialog_window = dialog.getWindow();

//获取到LayoutParams

WindowManager.LayoutParams dialog_window_attributes = dialog_window.getAttributes();

//设置宽度

dialog_window_attributes.width=400;

//设置高度

dialog_window_attributes.height=400;

dialog_window.setAttributes(dialog_window_attributes);

dialog.show();

这种方式主要是通过在代码中获取当前window的LayoutParams,通过设置宽度、高度来改变Dialog的宽高的。

2.通过自定义Dialog的布局来设置对话框的大小。在布局的时候,将整个layout的宽高设定为固定值,这样将layout设置到Dialog中时,对话框的大小将按照布局的大小显示。

android:layout_width="200dp"

android:layout_height="200dp"

android:orientation="vertical"

android:background="@android:color/darker_gray">

自定义对话框的位置

对话框的位置设置也是通过Gravity和WindowManager.LayoutParams来设置的。代码如下:

//获取到当前Activity的Window

Window dialog_window = dialog.getWindow();

//设置对话框的位置

dialog_window.setGravity(Gravity.TOP|Gravity.LEFT);

//获取到LayoutParams

WindowManager.LayoutParams dialog_window_attributes = dialog_window.getAttributes();

//设置对话框位置的偏移量

dialog_window_attributes.x=50;

dialog_window_attributes.y=50;

dialog_window.setAttributes(dialog_window_attributes);

dialog主题的部分属性的意义##

一、

//设置dialog头部不显示

true

效果如下图:

a3facb69a7c9

如果设置

false

显示效果为下图:

a3facb69a7c9

二、

//设置对话框的背景颜色是

@android:color/black

现在我们将background属性设置为黑色,显示效果如下:

可以看到对话框的文字部分的背景全部成了黑色,所以我们通常把这个属性的设置为透明的(@android:color/transparent)。

a3facb69a7c9

三、

//设置点击dialog以外的区域,dialog是否消失

false

四、

//是否允许对话框的背景变暗

false

具体效果图(上面的图为backgroundDimEnabled值为false情况,下面的图值为true,一般情况下我们都设置为true,也就是右图的样式):

a3facb69a7c9

a3facb69a7c9

五、

//对话框的背景变暗的程度,值越大,背景就越暗

0.3

如图(上面的图backgroundDimAmount属性的值为0.8,下面的图为0.3,可以明显看出两个对话框的背景灰度的差别)

a3facb69a7c9

a3facb69a7c9

六、

//dialog的动画效果

@style/dialog_animation

动画效果分为:进入动画和退出动画

@anim/dialog_enter

@anim/dialog_exit

七、windowBackground属性,设置这个属性后,dialog周边的一圈黑边就可以消失了,但是不过设置什么颜色,周边的黑边都消失,并没有显示出其他颜色的轮廓,很是奇怪。

//设置dialog的背景颜色

@android:color/holo_red_dark

效果图如下(上面的图是设置了windowBackground的属性值的,不管设置什么颜色的值,其效果都如下图一样。下面的图是没有设置这个属性值的,用的还是Theme.Dialog中的值,对话框周边就会出现一道黑边):

a3facb69a7c9

a3facb69a7c9

八、

//Dialog的windowFrame框

@android:color/holo_red_dark

当设置属性值为@null时,dialog显示所有图片中的样子,当为这个属性设置一个颜色时,比如代码中的深红色,显示效果如下:

a3facb69a7c9

九、

true

具体效果如图(上面的图为属性值为false情况,下面的图为属性值为true情况):

a3facb69a7c9

a3facb69a7c9

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值