【android学习】Dialog对话框

来源:互联网 发布:u站淘宝 编辑:程序博客网 时间:2024/05/24 04:54

1,Dialog

1)onCreateDialog(int)

2)showDialog(int)

第一次请求时,会从Activity中调用onCreateDialog。

3)onPrepareDialog(int,Dialog)

在每次打开对话框时被调用。

4)dismissDialog(int)

关闭对话框时,可以调用dismiss()。
在Activity中调用dismissDialog,会为这个对话框调用dismiss方法。

如果想使用onCreateDialog方法来管理对话框的状态,然后还在每次对话框消除的时候,这个对话框对象的状态将由该Activity保留。

5)removeDialog(intid)

调用该方法,将删除任何内部对象引用。如果这个对话框正在显示,也会删除。

6)常见对话框

private Dialog dialog;public void onCreate(Bundle savedInstanceState){    super.onCreate(savedInstanceState);    //创建一个默认对话框    dialog = new Dialog(this);    //添加xml对象到Dialog对象中    dialog.setContentView(R.layout.dialog1);    //设置标题    dialog.setTitle("Dialog");    //显示对话框    dialog.show();}

2,AlterDialog

1)Builder

AlterDialog通过AlterDialog的Builder进行创建,不能直接用new关键字构建对象。

因为其构造器都是保护的,所以不允许非子类调用。

AlertDialog.Builder builder = new AlertDialog.Builder(this);

2)setPositiveButton

setPositiveButton方法用来加确定按钮。

builder.setPositiveButton("确定"new DialogInterface.OnClickListener(){    @Override    public void onClick(DialogInterface dialog, int which){    }});

3)setNegativeButton

setNegativeButton方法用来加取消按钮。

4)show

用于创建并显示对话框。builder.show();
show()源码:

public AlertDialog show() {            AlertDialog dialog = create();            dialog.show();     return dialog;        }

create()方法可以创建对话框,但不显示。

5)setTitle

给AlterDialog设置标题。

builder.setTitle("标题");

6)setMessage

给AlterDialog设置内容。

builder.setMessage("内容");

7)setCancelable()

在这儿设置的时false,表示弹出的AlterDialog在用户点击返回键时不消失,该值默认是true。

8)setIcon

预设图片。

builder.setIcon(android.R.drawable.ic);

9)setView

添加自定义控件

LayoutInflater lif = LayoutInflater.from(this);View editView = lif.inflate(R.layout.dialog3, null);builder.setView(editView);

10)setSingleChoiceItems

单选对话框。

builder.setSingleChoiceItems(new String[]{"Item1","Item2","Item3"},0,new DialogInterface.OnClickListener(){    public void onClick(DialogInterface dialog, int which){        dialog.dismiss();    }});

11)setMultiChoiceItems

多选对话框。

builder.setMultiChoiceItems(new String[] {"Item1","Item2"},null,null);

12)setItems

列表对话框。

builder.setItems(new String[] {"Item1","Item2"},null);

3,ProgressDialog

1)概念

进度对话框,会有一个循环的进度条显示在对话框上。

2)demo

ProgressDialog dialog = new ProgressDialog(this);dialog.setTitle("标题");dialog.setMessage("请稍后");dialog.show();

4,自定义Builder弹出对话框

1)含有标题、一个View、一个按钮的对话框

/**      * 含有标题、一个View、一个按钮的对话框      * @param title      * @param view      * @param positiveText      * @param onPositiveClickListener      * @param cancelable      * @return      */      public AlertDialog showET_Dialog(String title, View view,              String positiveText,              DialogInterface.OnClickListener onPositiveClickListener,Boolean cancelable) {          AlertDialog alertDialog = new AlertDialog.Builder(this).setTitle(title)                  .setView(view)                  .setPositiveButton(positiveText, onPositiveClickListener)                  .setCancelable(cancelable)//设置为false,按返回键不能退出。默认为true                  .show();          return alertDialog;      }  

调用的时候这样用:

LayoutInflater inflater =  LayoutInflater.from(mContext);          View view = inflater.inflate(R.layout.fragment_task_builder_et, null);          final ClearEditText et = (ClearEditText)view.findViewById(R.id.fra_task_builder_et_NumLoad);          ((MainActivity) getActivity()).showET_Dialog("提示", view, "完成",                  new DialogInterface.OnClickListener() {              @Override              public void onClick(DialogInterface dialog, int which) {              }          }, true);  

.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="wrap_content"      android:gravity="center"      android:orientation="vertical"      android:padding="10dip" >      <TextView          style="@style/tv_standard"          android:textColor="@color/white"          android:gravity="left"          android:text="@string/fra_task_tv_NumLoad"          android:layout_marginBottom="10dip" />      <com.xaut.wx.view.ClearEditText          android:id="@+id/fra_task_builder_et_NumLoad"          style="@style/et_standard"          android:hint="@string/fra_task_et_NumLoad"          android:inputType="number" />  </LinearLayout>  

运行图:
运行图片

2)其它

/** 含有标题和内容的对话框 **/  protected AlertDialog showAlertDialog(String title, String message) {      AlertDialog alertDialog = new AlertDialog.Builder(this)              .setTitle(title)              .setMessage(message)              .setPositiveButton("确认", new OnClickListener() {//显示确定按钮                     @Override                     public void onClick(DialogInterface dialog, int which) {                       dialog.dismiss();                     }              })              .show();      return alertDialog;  }  /** 含有标题、内容、一个按钮的对话框 **/  public AlertDialog showAlertDialog(String title, String message,          String positiveText,          DialogInterface.OnClickListener onPositiveClickListener,Boolean cancelable) {      AlertDialog alertDialog = new AlertDialog.Builder(this).setTitle(title)              .setMessage(message)              .setPositiveButton(positiveText, onPositiveClickListener)              .setCancelable(cancelable)              .show();      return alertDialog;  }  /** 含有标题、内容、两个按钮的对话框 **/  public AlertDialog showAlertDialog(String title, String message,          String positiveText,          DialogInterface.OnClickListener onPositiveClickListener,          String negativeText,          DialogInterface.OnClickListener onNegativeClickListener) {      AlertDialog alertDialog = new AlertDialog.Builder(this).setTitle(title)              .setMessage(message)              .setPositiveButton(positiveText, onPositiveClickListener)              .setNegativeButton(negativeText, onNegativeClickListener)              .show();      return alertDialog;  }  /** 含有标题、内容、图标、两个按钮的对话框 **/  protected AlertDialog showAlertDialog(String title, String message,          int icon, String positiveText,          DialogInterface.OnClickListener onPositiveClickListener,          String negativeText,          DialogInterface.OnClickListener onNegativeClickListener) {      AlertDialog alertDialog = new AlertDialog.Builder(this).setTitle(title)              .setMessage(message).setIcon(icon)              .setPositiveButton(positiveText, onPositiveClickListener)              .setNegativeButton(negativeText, onNegativeClickListener)              .show();      return alertDialog;  }  
原创粉丝点击