安卓Dialog弹出对话框全解:包含了AlertDialog,DialogFragment
程序员文章站
2022-05-31 08:20:00
安卓dialog弹出对话框全解:包含了alertdialog,dialogfragment。dialog基类中并没有定义界面,所以如果使用dialog类设置弹出框,需要使用xml自...
安卓dialog弹出对话框全解:包含了alertdialog,dialogfragment。dialog基类中并没有定义界面,所以如果使用dialog类设置弹出框,需要使用xml自定义ui。
当然也自带了几个dialog派生的弹出框,例如alert dialog,并设置好了ui,你可以直接调用系统自带的dialog衍生品。除此之外,activity和fragment也可以作为dialog样式弹出使用。
dialog基类创建弹出框
1、首先你需要为你的dialog设置布局界面
这里添加布局界面为dialog_view.xml文件
2、使用dialog类创建一个新的对话框
private void displaynewdialog() { dialog dialog = new dialog(dialog_activity.this); //为当前窗口创建一个弹出框 //设置标题 dialog.settitle("dialog title"); //填充布局 dialog.setcontentview(r.layout.dialog_view); //更新对话框的ui textview text = (textview)dialog.findviewbyid(r.id.dialog_text_view); text.settext("this is the text in my dialog"); //显示对话框 dialog.show(); }
使用alert dialog定义弹出框
//配置一个alert dialog private void displayalertdialog() { context context = dialog_activity.this; string title = "对话框标题"; string message = "对话框内容"; string button1string = "确定"; string button2string = "取消"; alertdialog.builder ad = new alertdialog.builder(context); ad.settitle(title); ad.setmessage(message); //确定按钮点击事件 ad.setpositivebutton(button1string,new dialoginterface.onclicklistener() { public void onclick(dialoginterface dialog, int arg1) { log.v("弹出框", "点击了确定按钮"); } } ); //取消按钮点击事件 ad.setnegativebutton(button2string,new dialoginterface.onclicklistener(){ public void onclick(dialoginterface dialog, int arg1) { log.v("弹出框", "点击了取消按钮"); } } ); //设置对话框在点击返回物理键时的操作。 ad.setcancelable(true); ad.setoncancellistener(new dialoginterface.oncancellistener() { @override public void oncancel(dialoginterface dialog) { log.v("弹出框", "点击了物理键——返回"); } }); //显示对话框 ad.show(); }
将fragment定义为dialog显示
系统自带了dialogfragment类用来实现使用fragment实现dialog效果,dialogfragment继承自fragment。
dialog的界面还是使用上面的dialog_view.xml文件
下面实现一个自定义的dialogfragment。其中设置布局有两种方式,可以在oncreateview函数中返回一个自定义布局的view,也可以在oncreatedialog函数中函数一个dialog。不过两者不能同时使用。
import com.lp.app.r; import android.app.alertdialog; import android.app.dialog; import android.app.dialogfragment; import android.os.bundle; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.textview; public class dialogfragment1 extends dialogfragment { public static dialogfragment1 newinstance(string title,string message) { //创建一个新的带有指定参数的fragment实例 dialogfragment1 fragment = new dialogfragment1(); bundle args = new bundle(); args.putstring("title", title); //将参数存储在bundle,在程序暂停重启不会被销毁 args.putstring("message", message); //将参数存储在bundle,在程序暂停重启不会被销毁 fragment.setarguments(args); return fragment; } //使用oncreatdialog事件处理程序。oncreateview与oncreatdialog只能二选一 // @override // public dialog oncreatedialog(bundle savedinstancestate) { // //获取参数 // string title = getarguments().getstring("title"); // string message = getarguments().getstring("message"); // //使用alertbuilder创建新的对话框 // alertdialog.builder timedialog = new alertdialog.builder(getactivity()); // //配置对话框ui. // timedialog.settitle(title); // timedialog.setmessage(message); // //返回配置完成的对话框 // return timedialog.create(); // } // //使用oncreateview自定义布局。oncreateview与oncreatdialog只能二选一 @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { //获取参数 string title = getarguments().getstring("title"); string message = getarguments().getstring("message"); //填充对话框的ui view view = inflater.inflate(r.layout.dialog_view, container, false); //更新对话框内容 textview textview = (textview)view.findviewbyid(r.id.dialog_text_view); textview.settext(message); return view; } }
再在需要弹出dialog的地方,弹出这个对话框
private void showdialogfragment() { string title = "标题"; string message = "要显示的文本"; string tag = "my_dialog"; dialogfragment myfragment = dialogfragment1.newinstance(title,message); myfragment.show(getfragmentmanager(), tag); }
将activity定义为dialog显示
只需要在mainfest文件中注册activity时设置
android:theme="@android:style/theme.dialog"
可以使窗口表现如对话框
上一篇: Linux基础命令之mktemp详解