Android Dialog 的一些特性

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
默认的(黑或白一般)。而且这种方法下不可以再使用系统默认的标题栏了,因为它已经不存在了。所以如果你写上:


        TextView titleText = (TextView) findViewById(android.R.id.title);
titleText.setText("testtitle");

你会得到一个 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. 一些参数


getWindow().setDimAmount(0);

  这个函数用来设置 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>

Android Dialog 的一些特性,布布扣,bubuko.com

时间: 2024-08-05 08:54:44

Android Dialog 的一些特性的相关文章

Android dialog 全屏

Android中让Dialog全屏: 一.在style中定义样式: <?xml version="1.0" encoding="utf-8"?> <resources> <style name="Transparent"> <item name="android:windowBackground">@color/transparent_background</item>

android 7.0 新特性 和对开发者的影响

android 7.0新特性 - jiabailong的专栏 - 博客频道 - CSDN.NEThttp://blog.csdn.net/jiabailong/article/details/52411300 android 7.0对开发者会有哪些影响 - jiabailong的专栏 - 博客频道 - CSDN.NEThttp://blog.csdn.net/jiabailong/article/details/52411353 android 7.0 多窗口及新特性demo - jiabail

7种形式的Android Dialog使用举例

7种形式的Android Dialog使用举例 在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,在我们使用Android的过程中,我归纳了一下,Android Dialog的类型无非也就7种,下面我分别向大家介绍这7种Android Dialog对话框的使用方法,希望对大家能有所帮助. 1.该效果是当按返回按钮时弹出一个提示,来确保无误操作,采用常见的对话框样式. 创建dialog对话框方

开发者必看|Android 8.0 新特性及开发指南

背景介绍 谷歌2017 I/O开发者大会今年将于5月17-19日在美国加州举办.大会将跟往年一样发布最新的 Android 系统,今年为 Android 8.0.谷歌在今年3 月21日发布 Android 新系统开发者预览版时已给新系统取名为 Android O.自2008 年发布以来, Android 依靠 Google 的生态运作,全球市场份额在2016年底已超过85% .而近几年依靠 Android 发展起来的智能手机厂商不断增加, Android 生态大家庭也正在不断壮大. Androi

Android 5.X新特性

首先,如果要使用Android 5.X的新特性,我们必须导入5.X的支持包 FloatingActionButton Android 的新的设计规范中具有阴影效果的悬浮窗按钮. 使用之前需要先引入design包. FloatingActionButton是ImageView子类 我们先来看布局中的属性设置 <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout

几种不同的Android Dialog

在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,在我们使用Android的过程中,我归纳了一下,Android Dialog的类型无非也就7种,下面我分别向大家介绍这7种Android Dialog对话框的使用方法,希望对大家能有所帮助. 1.该效果是当按返回按钮时弹出一个提示,来确保无误操作,采用常见的对话框样式. 创建dialog对话框方法代码如下: ? 1 2 3 4 5 6 7 8

在 ANDROID DIALOG中使用

我想再android Dialog中使用 autocompletetext, 在开发测试过程中碰见不少问题,把最后的成品发布出来,避免大家走弯路,下面的代码是完整代码详细代码如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 5

android竖向显示新特性界面

腾讯手机管家,初始界面有个小飞机动啊动啊,还挺好玩的,而且显示新特征为竖向展示,不知道这种东西该如何实现呢?给自己留下比较深的印象,然后楼主就是探索这种是如何实现的. 看着很不错,显示特征为竖向,增加小火箭的动态感,兼具金秀贤的帅气,简单.明确.有特点. 我得目的: 1.实现显示新特征的竖向. 2.增加动态箭头的动感. 3.颜色采用小清新 一个自定义的ViewPager可以搞定,引用自JakeWharton的一个开源项目:点击打开链接,同时借鉴了weidi1989的Android之仿网易V3.5

自定义Android Dialog

private void showDialog() { mDialog = new Dialog(this); mDialog.setCanceledOnTouchOutside(true); Window dialogWindow = mDialog.getWindow(); dialogWindow.setBackgroundDrawable(new ColorDrawable(0)); dialogWindow.setContentView(R.layout.set_public_clie