安卓Dialog弹出对话框全解:包含了AlertDialog,DialogFragment
来源:互联网 发布:plc编程基础教程 编辑:程序博客网 时间:2024/05/22 01:47
全栈工程师开发手册 (作者:栾鹏)
安卓教程全解
Dialog基类中并没有定义界面,所以如果使用dialog类设置弹出框,需要使用xml自定义UI。
当然系统也自带了几个dialog派生的弹出框,例如Alert Dialog,并设置好了UI,你可以直接调用系统自带的dialog衍生品。除此之外,activity和fragment也可以作为dialog样式弹出使用。
dialog基类创建弹出框
1、首先你需要为你的dialog设置布局界面
这里添加布局界面为dialog_view.xml文件
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <TextView android:id="@+id/dialog_text_view" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="This is a Dialog!" /> <Button android:id="@+id/dialog_button" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Button" /></LinearLayout>
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"
可以使窗口表现如对话框
阅读全文
0 0
- 安卓Dialog弹出对话框全解:包含了AlertDialog,DialogFragment
- 安卓弹出对话框——Alertdialog
- (安卓) AlertDialog 弹出对话框效果
- Android 继承DialogFragment弹出dialog对话框一
- Android 继承DialogFragment弹出dialog对话框
- Android 继承DialogFragment弹出dialog对话框一
- Android 继承DialogFragment弹出dialog对话框二
- 安卓弹出使用Dialog创建的对话框之后触摸屏幕就消失了的解决方法
- 安卓弹出对话框——Alertdialog(一)
- 安卓弹出对话框——Alertdialog(一)
- 安卓弹出对话框——Alertdialog(一)
- 【安卓笔记】使用DialogFragment托管dialog
- 对话框-DialogFragment+AlertDialog+Calendar+DatePicker
- Android Dialog,DialogFragment对话框总结
- Android对话框Dialog和DialogFragment
- 安卓弹出对话框
- 安卓开发:AlertDialog类的使用【弹出对话框、进度条、输入框、单选框、复选框】
- Android-Dialog对话框全解
- theano.scan
- 查询select中选中的值bootstrao+Vue.js+spring
- PopWindown设置在底部的正上方的bug
- mybatis返回Map结果集
- Linux
- 安卓Dialog弹出对话框全解:包含了AlertDialog,DialogFragment
- python+requests实现接口测试
- CPAN的安装
- 链表中倒数第k个结点 输入一个链表,输出该链表中倒数第k个结点。
- HBase体系结构
- RecyclerView 侧滑删除菜单 最简版 没有之一
- 木块问题Uva101
- MySql中如何检出数据的行数
- Centos下LNMP的iptables配置规则