9、Dialog
对话框,要创建对话框之前首先要创建Builder类创建者
Builder是AlertDialog的子类,而且还是它的内部类
setPositiveButton --设置最左边的按钮
setNeutralButton
--设置中间的按钮
setNegativeButton --设置最右边的按钮
1 builder = new Builder(MainActivity.this); 2 builder.setIcon(android.R.drawable.ic_dialog_info); 3 builder.setTitle("dialg标题"); 4 //builder.setMessage("dialog对话框内容"); 5 6 builder.setPositiveButton("Yes", new OnClickListener() { 7 8 9 @Override 10 public void onClick(DialogInterface dialog, int which) { 11 // TODO Auto-generated method stub 12 13 } 14 }); 15 16 // builder.setNeutralButton("back", new OnClickListener() { 17 // 18 // @Override 19 // public void onClick(DialogInterface dialog, int which) { 20 // // TODO Auto-generated method stub 21 // 22 // } 23 // }); 24 25 builder.setNegativeButton("No", new OnClickListener() { 26 27 @Override 28 public void onClick(DialogInterface dialog, int which) { 29 // TODO Auto-generated method stub 30 31 } 32 }); 33 34 builder.setView(new CheckBox(this)); 35 36 37 38 builder.show();
由于 Builder 设计模式特性,上面代码也可以这样简写
1 // new Builder(this) 2 // .setIcon(android.R.drawable.ic_dialog_info) 3 // .setTitle("dialg标题") 4 // .setMessage("dialog对话框内容") 5 // .setPositiveButton("yes", new OnClickListener() { 6 // 7 // @Override 8 // public void onClick(DialogInterface dialog, int which) { 9 // // TODO Auto-generated method stub 10 // 11 // } 12 // }) 13 // .setNegativeButton("no", new OnClickListener() { 14 // 15 // @Override 16 // public void onClick(DialogInterface dialog, int which) { 17 // // TODO Auto-generated method stub 18 // 19 // } 20 // }) 21 // .setView(new CheckBox(this)) 22 // .create() 23 // .show();
builder.setView(new CheckBox(this));只能添加一个组件
如果添加多个组件,会被后面的覆盖掉
添加某些一组组件,还有对应函数
添加单选框
1 // builder.setSingleChoiceItems(new String[] {"单选","单选"}, 1, new OnClickListener() { 2 // 3 // @Override 4 // public void onClick(DialogInterface dialog, int which) { 5 // // TODO Auto-generated method stub 6 // 7 // } 8 // });
添加复习框
1 // builder.setMultiChoiceItems(new String[] {"多选","多选"}, new boolean[] {false,true}, new OnMultiChoiceClickListener() { 2 // 3 // @Override 4 // public void onClick(DialogInterface arg0, int arg1, boolean arg2) { 5 // // TODO Auto-generated method stub 6 // 7 // } 8 // });
添加列表
1 // builder.setItems(new String[] {"item1","item2","item3"}, new OnClickListener() { 2 // 3 // @Override 4 // public void onClick(DialogInterface arg0, int arg1) { 5 // // TODO Auto-generated method stub 6 // 7 // } 8 // });
此外,还可以自定义布局文件,当作一个组件用setView()添加
1 LayoutInflater inflater = getLayoutInflater(); 2 View layoutView = inflater.inflate(R.layout.dialogmain, (ViewGroup)findViewById(R.id.myLayout)); 3 4 builder.setView(layoutView);
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_height="wrap_content" android:layout_width="wrap_content" 4 android:background="#ffffffff" android:orientation="horizontal" 5 android:id="@+id/myLayout"> 6 <TextView 7 android:layout_height="wrap_content" 8 android:layout_width="wrap_content" 9 android:text="TextView" /> 10 <EditText 11 android:layout_height="wrap_content" 12 android:layout_width="wrap_content" 13 /> 14 <Button 15 android:layout_height="wrap_content" 16 android:layout_width="wrap_content" 17 android:text="btn1" 18 /> 19 <Button 20 android:layout_height="wrap_content" 21 android:layout_width="wrap_content" 22 android:text=" btn2" 23 /> 24 </LinearLayout>