测试代码:
布局:
activity_main.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 tools:context="com.zzw.testalerdialog.MainActivity" > 7 8 <Button 9 android:id="@+id/horizontally" 10 android:layout_width="match_parent" 11 android:layout_height="wrap_content" 12 android:layout_gravity="center_horizontal" 13 android:text="横向显示" /> 14 15 <Button 16 android:id="@+id/vertical" 17 android:layout_width="match_parent" 18 android:layout_height="wrap_content" 19 android:layout_gravity="center_horizontal" 20 android:paddingTop="20dp" 21 android:text="竖向显示" /> 22 23 <Button 24 android:id="@+id/singleChoice" 25 android:layout_width="match_parent" 26 android:layout_height="wrap_content" 27 android:layout_gravity="center_horizontal" 28 android:paddingTop="20dp" 29 android:text="单选框显示" /> 30 31 <Button 32 android:id="@+id/multiChoice" 33 android:layout_width="match_parent" 34 android:layout_height="wrap_content" 35 android:layout_gravity="center_horizontal" 36 android:paddingTop="20dp" 37 android:text="多选框显示" /> 38 39 <Button 40 android:id="@+id/myDialog" 41 android:layout_width="match_parent" 42 android:layout_height="wrap_content" 43 android:layout_gravity="center_horizontal" 44 android:paddingTop="20dp" 45 android:text="自定义显示" /> 46 47 <ImageView 48 android:layout_width="match_parent" 49 android:layout_height="wrap_content" 50 android:layout_gravity="center_horizontal" 51 android:layout_weight="1" 52 android:src="@drawable/ic_launcher" /> 53 54 </LinearLayout>
JAVA代码:
1 package com.zzw.testalerdialog; 2 3 import android.app.Activity; 4 import android.app.AlertDialog; 5 import android.content.Context; 6 import android.content.DialogInterface; 7 import android.os.Bundle; 8 import android.view.View; 9 import android.widget.Toast; 10 11 public class MainActivity extends Activity implements View.OnClickListener { 12 13 private Context context; 14 15 @Override 16 protected void onCreate(Bundle savedInstanceState) { 17 super.onCreate(savedInstanceState); 18 setContentView(R.layout.activity_main); 19 20 init(); 21 } 22 23 private void init() { 24 25 context = this; 26 27 findViewById(R.id.horizontally).setOnClickListener(this); 28 findViewById(R.id.vertical).setOnClickListener(this); 29 findViewById(R.id.singleChoice).setOnClickListener(this); 30 findViewById(R.id.multiChoice).setOnClickListener(this); 31 findViewById(R.id.myDialog).setOnClickListener(this); 32 33 } 34 35 // 横向类型显示 36 private void horizontallyShow() { 37 38 AlertDialog dialog = new AlertDialog.Builder(context).create(); 39 dialog.setIcon(R.drawable.ic_launcher); 40 dialog.setTitle("横向显示"); 41 dialog.setMessage("提示信息"); 42 // DialogInterface.BUTTON_POSITIVE作用是显示的顺序 43 dialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定", new DialogInterface.OnClickListener() { 44 45 @Override 46 public void onClick(DialogInterface dialog, int which) { 47 Toast.makeText(context, "确定", 0).show(); 48 } 49 }); 50 51 dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", new DialogInterface.OnClickListener() { 52 53 @Override 54 public void onClick(DialogInterface dialog, int which) { 55 Toast.makeText(context, "取消", 0).show(); 56 } 57 }); 58 59 dialog.setButton(DialogInterface.BUTTON_NEUTRAL, "考虑", new DialogInterface.OnClickListener() { 60 61 @Override 62 public void onClick(DialogInterface dialog, int which) { 63 Toast.makeText(context, "考虑", 0).show(); 64 } 65 }); 66 67 dialog.show(); 68 } 69 70 // 竖向类型显示 71 private void verticalShow() { 72 73 final String[] items = new String[3]; 74 for (int i = 0; i < 3; i++) { 75 items[i] = "选项--" + i; 76 } 77 78 AlertDialog dialog = new AlertDialog.Builder(context).setItems(items, new DialogInterface.OnClickListener() { 79 80 @Override 81 public void onClick(DialogInterface dialog, int which) { 82 83 Toast.makeText(context, items[which], Toast.LENGTH_SHORT).show(); 84 } 85 }).create(); 86 87 dialog.setTitle("竖向显示"); 88 dialog.setIcon(R.drawable.ic_launcher); 89 90 dialog.show(); 91 92 } 93 94 // 单选框类型显示 95 private void singleChoiceShow() { 96 97 final String[] items = new String[3]; 98 for (int i = 0; i < 3; i++) { 99 items[i] = "选项--" + i; 100 } 101 102 AlertDialog.Builder mBuilder = new AlertDialog.Builder(context); 103 // mBuilder.setIcon(R.drawable.ic_launcher); 104 // mBuilder.setTitle("单选框显示"); 105 106 // checkedItem默认选择的位置参数 107 mBuilder.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() { 108 109 @Override 110 public void onClick(DialogInterface dialog, int which) { 111 Toast.makeText(context, items[which], Toast.LENGTH_SHORT).show(); 112 dialog.dismiss(); 113 114 } 115 }); 116 117 AlertDialog dialog = mBuilder.create(); 118 dialog.setIcon(R.drawable.ic_launcher); 119 dialog.setTitle("单选框显示"); 120 dialog.show(); 121 122 } 123 124 // 复选框类型显示 125 private void multiChoiceShow() { 126 127 final String[] items = new String[3]; 128 for (int i = 0; i < 3; i++) { 129 items[i] = "选项--" + i; 130 } 131 132 AlertDialog.Builder mBuilder = new AlertDialog.Builder(context); 133 134 // checkedItems为默认勾选的状态 135 final boolean[] checkedItems = { false, true, false }; 136 // 这个监听的作用是用于检测item选中状态的变化 137 mBuilder.setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() { 138 139 @Override 140 public void onClick(DialogInterface dialog, int which, boolean isChecked) { 141 142 } 143 }); 144 145 AlertDialog dialog = mBuilder.create(); 146 dialog.setIcon(R.drawable.ic_launcher); 147 dialog.setTitle("复选框显示"); 148 149 // 用于确定,知道用户勾选了那些选项 150 dialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定", new DialogInterface.OnClickListener() { 151 152 @Override 153 public void onClick(DialogInterface dialog, int which) { 154 155 String s = ""; 156 for (int i = 0; i < items.length; i++) { 157 if (checkedItems[i]) 158 s += items[i] + " "; 159 } 160 Toast.makeText(context, s, Toast.LENGTH_SHORT).show(); 161 } 162 }); 163 164 // 用于取消 165 dialog.setButton(DialogInterface.BUTTON_NEUTRAL, "取消", new DialogInterface.OnClickListener() { 166 167 @Override 168 public void onClick(DialogInterface dialog, int which) { 169 170 } 171 }); 172 173 dialog.show(); 174 } 175 176 177 //自定义类型显示 178 private void myDialogShow(){ 179 180 AlertDialog.Builder mBuilder = new AlertDialog.Builder(context); 181 182 mBuilder.setView(getLayoutInflater().inflate(R.layout.my_dialog, null)); 183 184 AlertDialog dialog=mBuilder.create(); 185 // dialog.setIcon(R.drawable.ic_launcher); 186 // dialog.setTitle("自定义的对话框"); 187 dialog.show(); 188 } 189 190 @Override 191 public void onClick(View v) { 192 193 switch (v.getId()) { 194 case R.id.horizontally: 195 196 horizontallyShow(); 197 break; 198 case R.id.vertical: 199 200 verticalShow(); 201 break; 202 case R.id.singleChoice: 203 204 singleChoiceShow(); 205 break; 206 case R.id.multiChoice: 207 208 multiChoiceShow(); 209 break; 210 case R.id.myDialog: 211 myDialogShow(); 212 break; 213 214 } 215 } 216 217 }
自定义的布局my_dialog.xml:
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:background="#80CBC4" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 android:orientation="vertical" > 7 8 <ImageView 9 android:layout_width="wrap_content" 10 android:layout_height="wrap_content" 11 android:layout_gravity="center_horizontal" 12 android:src="@drawable/ic_launcher" /> 13 14 <TextView 15 android:layout_width="wrap_content" 16 android:layout_height="wrap_content" 17 android:layout_gravity="center_horizontal" 18 android:text="www.cnblogs.com/zzw1994" 19 android:textColor="@android:color/holo_red_light" /> 20 21 </LinearLayout>