AlertDialog

AlertDialog是android提供的一个显示弹出窗口类,可以很简单的实现弹出单选框,复选框,列表框等,并对其事件进行监听,调用其几个成员就函数就可以很简单实现,网上已经有很多现成的blog了,我就不再赘述。

AlertDialog自定义样式

老规矩,先看效果图,这里我简单的做了一个等待对话框。

AlertDialog

方法一:setView()

这种方法也是网上流传最多的一种的方法,使用下面这个函数来设置自定义View,用来“去边框”

public void setView (View view, int viewSpacingLeft, int viewSpacingTop, int viewSpacingRight, int viewSpacingBottom)

使用demo:

先来看看布局文件,一个垂直线型布局(loaddialog.xml),里面包含一个ProgressBar和一个TextView

然后我们调用上面介绍的setView方法设置视图,注意,这里我给LinearLayout 设置了一个背景图片,此图片有一个圆角, 然后按照网上的方法使用。

我们来看看效果图,是不是我们需要的那样。

AlertDialog_demo1

可以很清楚的看到,窗体被强行拉伸到默认的大小,而且默认的白色背景没有改变,四个角能看到背景,而且上面的背景图片是半透明的,所以颜色也被改变,看起来不太美观,所以”去边框”也只是覆盖了而已。而且在测试的过程也发现了一个不好的地方。就是这个API是版本23以后添加的,而我们的项目往往最低版本没这么高,所以这里有一个警告。

方法二:setContentView()

布局文件和上面使用的一样,所以没有贴出,不同的是,这里使用的是dialog.setContentView()

再来看看效果图。

AlertDialog

我们可以看到,效果还是不错的,小小的总结一下

  • setContentView改变的整个AlertDialog,包括背景,而setView只是改变AlertDialog的内容,不包括默认的背景
  • setContentView必须在Dialog.show()方法调用以后才能调用,不然程序会崩溃

方法三:使用Window类里面的setContentView()

其实方法三和方法二差不多,这里写出来只是为了让大家多一个选择。

效果图和方法二一样,大家可以自行下载源码查看,同样的:setContentView必须在Dialog.show()方法调用以后才能调用。

修改AlertDialog的大小和位置

同样是使用Window类。下面是关键代码

使用WindowManager.LayoutParams attributes = window.getAttributes();获取属性,然后修改这个LayoutParams,然后设置就行。里面调用了一个window.setGravity()方法用来设置AlertDialog的对齐位置,然后attributes.x = 110和attributes.y = 0表示设置对于这个位置的偏移量,这个偏移量可以为负数。

demo源码:360云盘下载 提取码:2326

 

最后修改日期: 2016年2月6日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。