Android中Dialog对话框

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android中Dialog对话框相关的知识,希望对你有一定的参考价值。

布局文件xml:

技术分享
 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical"
 6     android:paddingBottom="@dimen/activity_vertical_margin"
 7     android:paddingLeft="@dimen/activity_horizontal_margin"
 8     android:paddingRight="@dimen/activity_horizontal_margin"
 9     android:paddingTop="@dimen/activity_vertical_margin"
10     tools:context=".DialogActivity" >
11 
12     <Button
13         android:id="@+id/plainDialog"
14         android:layout_width="match_parent"
15         android:layout_height="wrap_content"
16         android:text="普通Dialog" />
17 
18     <Button
19         android:id="@+id/plainDialogEvent"
20         android:layout_width="match_parent"
21         android:layout_height="wrap_content"
22         android:text="Dialog按钮事件集中处理" />
23 
24     <Button
25         android:id="@+id/inputDialog"
26         android:layout_width="match_parent"
27         android:layout_height="wrap_content"
28         android:text="请输入框" />
29 
30     <Button
31         android:id="@+id/listDialog"
32         android:layout_width="match_parent"
33         android:layout_height="wrap_content"
34         android:text="列表对话框" />
35 
36     <Button
37         android:id="@+id/radioDialog"
38         android:layout_width="match_parent"
39         android:layout_height="wrap_content"
40         android:text="单选对话框" />
41 
42     <Button
43         android:id="@+id/checkboxDialog"
44         android:layout_width="match_parent"
45         android:layout_height="wrap_content"
46         android:text="多选对话框" />
47 
48     <Button
49         android:id="@+id/diyDialog"
50         android:layout_width="match_parent"
51         android:layout_height="wrap_content"
52         android:text="自定义布局对话框" />
53 
54 </LinearLayout>
技术分享

Activity文件:

普通的dialog:

技术分享
 1 private void plainDialogDemo() {
 2 
 3         Button plainBtn = (Button) findViewById(R.id.plainDialog);
 4         plainBtn.setOnClickListener(new OnClickListener() {
 5 
 6             public void onClick(View v) {
 7 
 8                 new AlertDialog.Builder(DialogActivity.this)
 9                         .setTitle("删除")
10                         .setMessage("确定删除指定数据")
11                         .setPositiveButton("确定",
12                                 new DialogInterface.OnClickListener() {
13 
14                                     @Override
15                                     public void onClick(DialogInterface dialog,
16                                             int which) {
17                                         Toast.makeText(getApplicationContext(),
18                                                 "确定了", Toast.LENGTH_SHORT)
19                                                 .show();
20                                     }
21                                 })
22                         .setNegativeButton("取消",
23                                 new DialogInterface.OnClickListener() {
24 
25                                     @Override
26                                     public void onClick(DialogInterface dialog,
27                                             int which) {
28                                     }
29                                 }).setCancelable(false).show();
30             }
31         });
32     }
技术分享

效果如下:技术分享

输入文本框的dialog:

技术分享
 1 private void inputDialog() {
 2         Button inputBtn = (Button) findViewById(R.id.inputDialog);
 3         inputBtn.setOnClickListener(new OnClickListener() {
 4 
 5             @Override
 6             public void onClick(View v) {
 7                 // TODO Auto-generated method stub
 8                 final EditText et = new EditText(DialogActivity.this);
 9                 new AlertDialog.Builder(DialogActivity.this)
10                         .setTitle("请输入数字")
11                         .setView(et)
12                         .setPositiveButton("确定",
13                                 new DialogInterface.OnClickListener() {
14 
15                                     @Override
16                                     public void onClick(DialogInterface dialog,
17                                             int which) {
18                                         // TODO Auto-generated method stub
19                                         Toast.makeText(getApplicationContext(),
20                                                 et.getText(),
21                                                 Toast.LENGTH_SHORT).show();
22                                     }
23                                 }).setNegativeButton("取消", null)
24                         .setCancelable(false).show();
25             }
26         });
27     }
技术分享

效果如下:

技术分享

列表dialog:

技术分享
private void listDialogDemo() {
        Button listBtn = (Button) findViewById(R.id.listDialog);
        listBtn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                final String[] names = { "C罗", "J罗", "H罗" };
                new AlertDialog.Builder(DialogActivity.this).setTitle("列表对话框")
                        .setItems(names, new DialogInterface.OnClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog,
                                    int which) {
                                Toast.makeText(DialogActivity.this,
                                        names[which], Toast.LENGTH_SHORT)
                                        .show();
                            }
                        }).setNegativeButton("取消", null).show();
            }
        });
    }
技术分享

效果如下:

技术分享

单选dialog:

技术分享
 1 private void radioDialogDemo() {
 2         Button radioButton = (Button) findViewById(R.id.radioDialog);
 3         radioButton.setOnClickListener(new OnClickListener() {
 4 
 5             @Override
 6             public void onClick(View v) {
 7 
 8                 final String[] names = { "C罗", "J罗", "H罗" };
 9                 new AlertDialog.Builder(DialogActivity.this)
10                         .setTitle("列表对话框")
11                         .setSingleChoiceItems(names, 0,
12                                 new DialogInterface.OnClickListener() {
13 
14                                     @Override
15                                     public void onClick(DialogInterface dialog,
16                                             int which) {
17 
18                                         selecteName = names[which];
19                                     }
20                                 })
21                         .setPositiveButton("确定",
22                                 new DialogInterface.OnClickListener() {
23 
24                                     @Override
25                                     public void onClick(DialogInterface dialog,
26                                             int which) {
27 
28                                         Toast.makeText(DialogActivity.this,
29                                                 selecteName, Toast.LENGTH_SHORT)
30                                                 .show();
31                                     }
32                                 }).setNegativeButton("取消", null).show();
33             }
34         });
35     }
技术分享

效果如下:

技术分享

多选dialog:

技术分享
 1 private void checkDialogDemo() {
 2         Button checkBtn = (Button) findViewById(R.id.checkboxDialog);
 3         checkBtn.setOnClickListener(new OnClickListener() {
 4 
 5             @Override
 6             public void onClick(View v) {
 7                 final String[] names = { "C罗", "J罗", "H罗" };
 8                 final boolean[] selected = new boolean[] { true, false, true };
 9                 new AlertDialog.Builder(DialogActivity.this)
10                         .setMultiChoiceItems(
11                                 names,
12                                 selected,
13                                 new DialogInterface.OnMultiChoiceClickListener() {
14 
15                                     @Override
16                                     public void onClick(DialogInterface dialog,
17                                             int which, boolean isChecked) {
18 
19                                     }
20                                 })
21                         .setPositiveButton("确定",
22                                 new DialogInterface.OnClickListener() {
23 
24                                     @Override
25                                     public void onClick(DialogInterface dialog,
26                                             int which) {
27                                         StringBuilder sb = new StringBuilder(
28                                                 "你选择了:");
29                                         for (int i = 0; i < names.length; i++) {
30                                             if (selected[i]) {
31                                                 sb.append(names[i]);
32                                             }
33                                         }
34                                         Toast.makeText(DialogActivity.this,
35                                                 sb.toString(), 1).show();
36                                     }
37                                 }).setNegativeButton("取消", null).show();
38             }
39         });
40     }
技术分享

效果如下:

技术分享

自定义dialog:

技术分享
 1 private void customDialogDemo() {
 2         final AlertDialog dlg = new AlertDialog.Builder(this).create();
 3         dlg.show();
 4         Window window = dlg.getWindow();
 5         window.setContentView(R.layout.diylayout);
 6         ImageButton ok = (ImageButton) window.findViewById(R.id.btnok);
 7         ok.setOnClickListener(new View.OnClickListener() {
 8 
 9             @Override
10             public void onClick(View v) {
11                 Toast.makeText(getApplicationContext(), "关闭了",
12                         Toast.LENGTH_SHORT).show();
13                 dlg.dismiss();
14             }
15         });
16     }
技术分享

自定义布局:

技术分享
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent" >
 5 
 6     <ImageView
 7         android:id="@+id/dialogimg"
 8         android:layout_width="wrap_content"
 9         android:layout_height="wrap_content"
10         android:layout_centerInParent="true"
11         android:src="@drawable/dialog_bg" />
12 
13     <TextView
14         android:layout_width="wrap_content"
15         android:layout_height="wrap_content"
16         android:layout_alignLeft="@id/dialogimg"
17         android:layout_alignTop="@id/dialogimg"
18         android:layout_marginLeft="50dp"
19         android:layout_marginTop="60dp"
20         android:text="自定义的dialog" />
21 
22     <ImageButton
23         android:id="@+id/btnok"
24         android:layout_width="30dp"
25         android:layout_height="30dp"
26         android:layout_alignRight="@id/dialogimg"
27         android:layout_alignTop="@id/dialogimg"
28         android:layout_marginRight="15dp"
29         android:layout_marginTop="15dp"
30         android:background="@drawable/close_dialog" />
31 
32 </RelativeLayout>
技术分享

效果如下:

技术分享

以上是关于Android中Dialog对话框的主要内容,如果未能解决你的问题,请参考以下文章

自定义对话框片段

有没有办法从我的 Dialog 片段中的 Activity 调用方法?

Android自定义Dialog多选对话框(Dialog+Listview+CheckBox)

android 中如何让dialog在一个指定控件下方显示

android 8种对话框(Dialog)使用方法汇总

Android开发实战之底部Dialog弹出效果