Android 中的对话框 dialog
对话框对于应用是必不可少的一个组件,在Android中也不例外,用于提示重要信息...
Android提供了丰富的对话框支持,它提供了4种常用的对话框形式:
- AlertDialog:警告对话框,使用最广泛功能最丰富的一个对话框
- ProgressDialog:进度条对话框,只是对进度条进行了简单的封装
- DatePickerDialog:日期对话框
- TimePickerDialog:时间对话框
这里简单介绍 AlertDialog 的使用方法:
activity_main 布局文件
1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas.android.com/tools" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 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="com.dragon.android.alertdialog.MainActivity"> 11 12 <Button 13 android:layout_width="wrap_content" 14 android:layout_height="wrap_content" 15 android:text="massage" 16 android:id="@+id/bt_msg" 17 android:layout_alignParentTop="true" 18 android:layout_centerHorizontal="true" /> 19 20 <Button 21 android:layout_width="wrap_content" 22 android:layout_height="wrap_content" 23 android:text="sure" 24 android:id="@+id/bt_sure" 25 android:layout_below="@+id/bt_msg" 26 android:layout_alignRight="@+id/bt_msg" 27 android:layout_alignEnd="@+id/bt_msg" /> 28 29 <Button 30 android:layout_width="wrap_content" 31 android:layout_height="wrap_content" 32 android:text="EditText" 33 android:id="@+id/bt_editText" 34 android:layout_below="@+id/bt_sure" 35 android:layout_alignLeft="@+id/bt_sure" 36 android:layout_alignStart="@+id/bt_sure" /> 37 38 <Button 39 android:layout_width="wrap_content" 40 android:layout_height="wrap_content" 41 android:text="singlechoice" 42 android:id="@+id/bt_singleChoice" 43 android:layout_below="@+id/bt_editText" 44 android:layout_centerHorizontal="true" /> 45 46 <Button 47 android:layout_width="wrap_content" 48 android:layout_height="wrap_content" 49 android:text="mutichoice" 50 android:id="@+id/bt_multiChoice" 51 android:layout_below="@+id/bt_singleChoice" 52 android:layout_centerHorizontal="true" /> 53 54 <Button 55 android:layout_width="wrap_content" 56 android:layout_height="wrap_content" 57 android:text="imageview" 58 android:id="@+id/bt_imageView" 59 android:layout_below="@+id/bt_multiChoice" 60 android:layout_centerHorizontal="true" /> 61 </RelativeLayout>
MainActivity
1 package com.dragon.android.alertdialog; 2 3 import android.content.DialogInterface; 4 import android.os.Bundle; 5 import android.support.v7.app.AlertDialog; 6 import android.support.v7.app.AppCompatActivity; 7 import android.view.View; 8 import android.widget.EditText; 9 import android.widget.ImageView; 10 11 public class MainActivity extends AppCompatActivity implements View.OnClickListener { 12 13 @Override 14 protected void onCreate(Bundle savedInstanceState) { 15 super.onCreate(savedInstanceState); 16 setContentView(R.layout.activity_main); 17 initView(); 18 } 19 20 private void initView() { 21 findViewById(R.id.bt_msg).setOnClickListener(this); 22 findViewById(R.id.bt_sure).setOnClickListener(this); 23 findViewById(R.id.bt_editText).setOnClickListener(this); 24 findViewById(R.id.bt_singleChoice).setOnClickListener(this); 25 findViewById(R.id.bt_multiChoice).setOnClickListener(this); 26 findViewById(R.id.bt_imageView).setOnClickListener(this); 27 } 28 29 @Override 30 public void onClick(View v) { 31 AlertDialog.Builder builder = new AlertDialog.Builder(this); 32 switch (v.getId()) {
33 case R.id.bt_msg: 34 builder 35 .setTitle("Title") // 设置标题 36 .setMessage("this is a massage") // 设置提示信息 37 .setPositiveButton("sure", null) // 参数1:按钮名;参数2:监听器 38 .show(); 39 break;
40 case R.id.bt_sure: 41 builder 42 .setTitle("Sure") 43 .setMessage("Sure?") 44 .setPositiveButton("sure", null) 45 .setNegativeButton("cancel", null) 46 .show(); 47 break;
48 case R.id.bt_editText: 49 builder 50 .setTitle("Please input") 51 .setView(new EditText(this)) // 此方法显示一个View 52 .setPositiveButton("sure", null) 53 .setNegativeButton("cancel", null) 54 .show(); 55 break;
56 case R.id.bt_singleChoice: 57 builder 58 .setTitle("Please choice") 59 .setSingleChoiceItems(new String[]{"A", "B", "C"}, 0, 60 new DialogInterface.OnClickListener() { 61 @Override 62 public void onClick(DialogInterface dialog, int which) { 63 // 单选框,点击一个则自动退出 64 dialog.dismiss(); 65 } 66 }) // 参数1:选择框的选项数;参数2:选择的选项ID;参数3:监听器 67 .setNegativeButton("cancel", null) 68 .show(); 69 break;
70 case R.id.bt_multiChoice: 71 builder 72 .setTitle("Please choice") 73 .setMultiChoiceItems(new String[]{"A", "B", "C"}, null, null) // 类同单选 74 .setPositiveButton("sure", null) 75 .setNegativeButton("cancel", null) 76 .show(); 77 break;
78 case R.id.bt_imageView: 79 ImageView imageView = new ImageView(this); 80 imageView.setImageResource(R.mipmap.ic_launcher); // 设置图片资源 81 builder 82 .setTitle("Image") 83 .setView(imageView) // 此方法显示一个View 84 .setPositiveButton("sure", null) 85 .show(); 86 break; 87 } 88 } 89 }