安卓dialog弹出对话框全解:包含了alertdialog,dialogfragment。dialog基类中并没有定义界面,所以如果使用dialog类设置弹出框,需要使用xml自定义ui。
当然也自带了几个dialog派生的弹出框,例如alert dialog,并设置好了ui,你可以直接调用系统自带的dialog衍生品。除此之外,activity和fragment也可以作为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 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(); }
系统自带了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); }
只需要在mainfest文件中注册activity时设置
android:theme="@android:style/theme.dialog"
可以使窗口表现如对话框
如对本文有疑问, 点击进行留言回复!!
【Appium踩坑】小米手机,启动报错:exited with code 255 writing to settings requires:android.permission.WRITE_SECUR
android 拍照 预览图与 照片分辨率(可视区域)不一致
[PAT顶级]1025 Keep at Most 100 Characters (35分)
Android 天气APP(二十)增加欢迎页及白屏黑屏处理、展示世界国家/地区的城市数据
Android使用SharedPreferences保存List列表数据
解决android sdk 运行出现 could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037:的问题
网友评论