Android Dialog 的一些特性
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Android Dialog 的一些特性,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2713字,纯文字阅读大概需要4分钟。
内容图文
![Android Dialog 的一些特性](/upload/InfoBanner/zyjiaocheng/1197/bec0e46eb7e542438b30db8383eb5cb4.jpg)
1. Dialog 与 AlertDialog 的区别。
AlertDialog 是一种特殊形式的 Dialog。这个类中,我们可以添加一个,两个或者三个按钮,可以设置标题。所以,当我们想使用 AlertDialog 默认的按钮形式,用 AlertDialog 更加方便,而且有一个类 AlertDialog.Builder 很方便创建一个 AlertDialog。
2. Dialog 与 AlertDialog 写代码时需注意的事项。
我们可以给一个 Dialog 用自定义的 Layout。有两个位置可以设置 Layout。
- 一个是结构体中
- 一个是 onCreate 方法中
如果使用 AlertDialog,在结构体中需要写
View contentView = LayoutInflater.from(context).inflate(R.layout.cutomized_dialog, null); setView(contentView);
而不能直接写 setContentView(R.layout...); 这会导致错误:E/AndroidRuntime(4544):
android.util.AndroidRuntimeException: requestFeature() must be called before
adding content
在 onCreate 里写的话,可以直接用
setContentView(R.layout...); 而不会导致错误。但是,这两种方法是有区别的!
如果写在结构体里,用的是 LayoutInflater,而真正的外壳依然是默认的 Dialog 的一个外壳。也就是有 Dialog 默认的标题,默认的背景颜色等。
但如果写在 onCreate 里,使用 setContentView(R.layout...); 这种情形下,Dialog 默认的 Layout 外壳就不存在了,而使用我们自定义的 Layout。比如你的 Layout 的背景颜色是透明,那么出来的 Dialog 的背景就是透明的。而写在结构体里的情况则背景色是系统 Dialog 默认的(黑或白一般)。而且这种方法下不可以再使用系统默认的标题栏了,因为它已经不存在了。所以如果你写上:
你会得到一个 NullPointer 。因为 android.R.id.title 这个 Layout 已经被覆盖。
如果使用 Dialog,在结构体里,可以直接写 setContentView(R.layout.cutomized_dialog); 而不用 LayoutInflater。
在 onCreate 里的话,也是一样,直接写 setContentView(R.layout.cutomized_dialog);
也就是说,如果用的是 Dialog,两种方法写没有任何区别。都会使用默认的 Dialog 样式。如果想修改样式,则需给 Dialog 提供自定义的样式。
我曾经需要创建一个背景透明的 Dialog,可是不管我怎么改 style,都没有成功。最后解决方案是使用了 AlertDialog 然后在 onCreate 方法中使用自己的 Layout,并把它的背景设置为透明。
Dialog 透明效果成功。解决方案是给 Dialog 的背景设置为一个透明的图片。(有一篇文章可供参考,http://blog.csdn.net/sodino/article/details/5822147)
< item name ="android:windowBackground" >@drawable/a_transparent_image</item>
详情看下面的 xml 文件。
3. 一些参数
这个函数用来设置 Dialog 周围的颜色。系统默认的是半透明的灰色。值设为0则为完全透明。
<? xml version="1.0" encoding="utf-8" ?> < resources > < style name ="dialog" parent ="@android:style/Theme.Dialog" > <!-- 边框 --> < item name ="android:windowFrame" >@null</item><!--是否浮现在activity之上--><item name="android:windowIsFloating">true</item><!--半透明--><item name="android:windowIsTranslucent">false</item><!--无标题--><item name="android:windowNoTitle">true</item><!--背景透明这种方法不好使--><item name="android:windowBackground">@color/transparent</item><!--背景透明正确方法--><item name="android:windowBackground">@drawable/a_transparent_image</item><!--模糊--><item name="android:backgroundDimEnabled">false</item></style></resources><item name="android:windowBackground">@color/transparent</item>
原文:http://www.cnblogs.com/davesuen/p/3709719.html
内容总结
以上是互联网集市为您收集整理的Android Dialog 的一些特性全部内容,希望文章能够帮你解决Android Dialog 的一些特性所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。