Android Dialog 对话框详解及示例代码
程序员文章站
2024-03-07 09:11:02
android dialog 对话框
1、dialog介绍
2、alertdialog的基本使用
3、自定义对话框 custom dialog...
android dialog 对话框
1、dialog介绍
2、alertdialog的基本使用
3、自定义对话框 custom dialog
一、dialog介绍
dialog也是android中常用的用户界面元素,他同menu一样也不是view的子类。让我们看一下它的继承关系:
这里要留意一下他的直接子类 alertdialog,和间接子类 datepickerdialog,progressdialog,timepickerdialog,其中后三个我们在前面的章节已经讲过,今天我们把重点放在alertdialog上。
二、alertdialog的基本使用
alertdialog对话框是dialog的子类,它提供一个图标,一个标题,一个文本和3个按钮。我们在activity里可以自行创建和显示dialog,也可以通过activity的方法对其进行管理。我们可以通过下面的例子学习它的使用方法,同样请注意代码中的注释。
1、创建一个项目 lesson17_helloalertdialog,activity的文件名叫 mainhelloalertdialog.java
2、res/layout/main.xml 的内容如下:
<?xml version="1.0" encoding="utf-8"?> <linearlayout android:layout_height="fill_parent" android:layout_width="fill_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android"> <textview android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/textview01" android:text="对话框示例" android:textsize="20sp" android:layout_margintop="5dp"> </textview> <button android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/button01" android:text="显示对话框|showdialog()" android:textsize="20sp" android:layout_margintop="5dp"> </button> <button android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/button02" android:text="关闭对话框|dismissdialog()" android:textsize="20sp" android:layout_margintop="5dp"> </button> <button android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/button03" android:text="移除对话框|removedialog()" android:textsize="20sp" android:layout_margintop="5dp"> </button> </linearlayout>
3、mainhelloalertdialog.java的内容如下:
package android.basic.lesson17; import android.app.activity; import android.app.alertdialog; import android.app.dialog; import android.content.dialoginterface; import android.content.dialoginterface.onclicklistener; import android.os.bundle; import android.view.view; import android.widget.button; import android.widget.toast; public class mainhelloalertdialog extends activity { //定义一个对话框的id int edward_movie_dialog = 1; // 对话框按钮点击事件监听器 onclicklistener ocl = new onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { switch (which) { case dialog.button_negative: toast.maketext(mainhelloalertdialog.this, "我不喜欢他的电影。", toast.length_long).show(); break; case dialog.button_neutral: toast.maketext(mainhelloalertdialog.this, "说不上喜欢不喜欢。", toast.length_long).show(); break; case dialog.button_positive: toast.maketext(mainhelloalertdialog.this, "我很喜欢他的电影。", toast.length_long).show(); break; } } }; @override /** called when the activity is first created. */ public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); // 定义对话框对象 dialog dialog = new alertdialog.builder(this) .seticon(android.r.drawable.btn_star).settitle("喜好调查") .setmessage("你喜欢看爱德华.诺顿edward norton的电影吗?") .setnegativebutton("不喜欢", ocl).setneutralbutton("一般般", ocl) .setpositivebutton("很喜欢", ocl).create(); //显示对话框 dialog.show(); //定义 按钮 ui组件 button b1 = (button) findviewbyid(r.id.button01); button b2 = (button) findviewbyid(r.id.button02); button b3 = (button) findviewbyid(r.id.button03); //定义按钮的单击事件监听器 view.onclicklistener b_ocl= new view.onclicklistener() { @override public void onclick(view v) { switch(v.getid()){ case r.id.button01: //显示对话框 showdialog(edward_movie_dialog); break; case r.id.button02: //关闭对话框 这个功能好傻x,根本点不到的按钮 dismissdialog(edward_movie_dialog); break; case r.id.button03: //移除对话框 这个功能好傻x,根本点不到的按钮 removedialog(edward_movie_dialog); break; } } }; //绑定按钮监听器 b1.setonclicklistener(b_ocl); b2.setonclicklistener(b_ocl); b3.setonclicklistener(b_ocl); } // 创建会话框时调用 @override public dialog oncreatedialog(int id) { toast.maketext(this, "oncreatedialog方法被调用", toast.length_long).show(); return new alertdialog.builder(this) .seticon(android.r.drawable.btn_star).settitle("喜好调查") .setmessage("你喜欢看爱德华.诺顿edward norton的电影吗?") .setnegativebutton("不喜欢", ocl).setneutralbutton("一般般", ocl) .setpositivebutton("很喜欢", ocl).create(); } // 每次显示对话框之前会被调用 @override public void onpreparedialog(int id, dialog dialog){ toast.maketext(this, "onpreparedialog方法被调用", toast.length_long).show(); super.onpreparedialog(id, dialog); } }
4、运行结果如下:
有兴趣的同学可以考虑一下如何改进关闭和移除对话框按钮。
以上就是对android dialog 资料的整理,后续继续补充,谢谢大家对本站的支持!