android安卓之常用对话框设计AlertDialog
学习目的:掌握常用对话框中提示,单选,复选,自定义对话框的设计和使用。
布局文件
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android" >
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="你的选择是:" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/tip_btn"
android:layout_width="140dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="提示对话框" />
<Button
android:id="@+id/tip2_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="自定义提示对话框" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/radio_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="单选对话框" />
<Button
android:id="@+id/mul_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="多选对话框" />
</LinearLayout>
</LinearLayout>
MainActivity文件
提示
当点击“提示对话框”时,显示内容如下,当点击确定时,文本显示内容为“你的选择是确定”,反之文本内容显示为“你的选择是取消”。
tip_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.mipmap.ic_launcher);
builder.setTitle("注意");
builder.setMessage("你确定要退出吗");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
tv.setText("你的选择是确定");
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
tv.setText("你的选择是取消");
}
});
builder.create();
builder.show();
}
});
自定义
当点击“自定义提示对话框”时,显示登录界面,如下图左边,点击确定后效果显示如右边。
登录界面的布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android" >
<EditText
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入用户名" />
<EditText
android:id="@+id/pass"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入密码" />
</LinearLayout>
点击事件方法
需要我们了解的是
LayoutInflater inflater=getLayoutInflater();
View layout=inflater.inflate(R.layout.login_dialog,null);这两句是把另一个登录界面引入到事件中。后通过
builder.setView(layout);来显示登录的布局文件。
tip2_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
LayoutInflater inflater=getLayoutInflater();
View layout=inflater.inflate(R.layout.login_dialog,null);
final EditText etName,etPass;
etName=layout.findViewById(R.id.name);
etPass=layout.findViewById(R.id.pass);
builder.setView(layout);
builder.setTitle("登录");
builder.setIcon(R.mipmap.ic_launcher);
builder.setPositiveButton("确定",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
String name=etName.getText().toString().trim();
String pass=etPass.getText().toString().trim();
tv.setText("你的用户名是"+name+",你的密码是"+pass);
}
});
builder.setNegativeButton("取消",null);
builder.create();
builder.show();
}
});
单选
当点击“单选对话框”时,显示效果如下图左边,选择某个选项后,显示效果如右边。
radio_btn.setOnClickListener(new View.OnClickListener() {
String[] items = new String[] {"信管专业","计科专业","软工专业"};
int choose=0;
@Override
public void onClick(View view) {
AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.mipmap.ic_launcher);
builder.setTitle("选择专业");
builder.setCancelable(false);
builder.setSingleChoiceItems(items, 1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
choose=i;
}
});
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
tv.setText("你的专业是"+items[choose]);
}
});
builder.setNegativeButton("取消",null);
builder.create();
builder.show();
}
});
多选
当点击“多选对话框”时,显示效果如下图左边,选择某个选项后,显示效果如右边。
mul_btn.setOnClickListener(new View.OnClickListener() {
String[] place = new String[] {"北京","上海","纽约","巴黎"};
boolean[] check=new boolean[] {false,true,true,false};
@Override
public void onClick(View view) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.mipmap.ic_launcher);
builder.setTitle("请选择你去过的城市");
builder.setMultiChoiceItems(place, check, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i, boolean b) {
check[i]=b;
}
});
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
StringBuilder stringBuilder=new StringBuilder("你去过的城市有:");
for (int j=0; j<place.length ;j++){
if (check[j]==true){
stringBuilder.append(place[j]).append("\t");
}
}
tv.setText(stringBuilder.toString());
}
});
builder.setNegativeButton("取消",null);
builder.create();
builder.show();
}
});
最后附上全的main文件
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button tip_btn=findViewById(R.id.tip_btn);
Button tip2_btn=findViewById(R.id.tip2_btn);
Button radio_btn=findViewById(R.id.radio_btn);
Button mul_btn=findViewById(R.id.mul_btn);
final TextView tv = findViewById(R.id.tv);
tip_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.mipmap.ic_launcher);
builder.setTitle("注意");
builder.setMessage("你确定要退出吗");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
tv.setText("你的选择是确定");
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
tv.setText("你的选择是取消");
}
});
builder.create();
builder.show();
}
});
tip2_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
LayoutInflater inflater=getLayoutInflater();
View layout=inflater.inflate(R.layout.login_dialog,null);
final EditText etName,etPass;
etName=layout.findViewById(R.id.name);
etPass=layout.findViewById(R.id.pass);
builder.setView(layout);
builder.setTitle("登录");
builder.setIcon(R.mipmap.ic_launcher);
builder.setPositiveButton("确定",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
String name=etName.getText().toString().trim();
String pass=etPass.getText().toString().trim();
tv.setText("你的用户名是"+name+",你的密码是"+pass);
}
});
builder.setNegativeButton("取消",null);
builder.create();
builder.show();
}
});
radio_btn.setOnClickListener(new View.OnClickListener() {
String[] items = new String[] {"信管专业","计科专业","软工专业"};
int choose=0;
@Override
public void onClick(View view) {
AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.mipmap.ic_launcher);
builder.setTitle("选择专业");
builder.setCancelable(false);
builder.setSingleChoiceItems(items, 1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
choose=i;
}
});
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
tv.setText("你的专业是"+items[choose]);
}
});
builder.setNegativeButton("取消",null);
builder.create();
builder.show();
}
});
mul_btn.setOnClickListener(new View.OnClickListener() {
String[] place = new String[] {"北京","上海","纽约","巴黎"};
boolean[] check=new boolean[] {false,true,true,false};
@Override
public void onClick(View view) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.mipmap.ic_launcher);
builder.setTitle("请选择你去过的城市");
builder.setMultiChoiceItems(place, check, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i, boolean b) {
check[i]=b;
}
});
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
StringBuilder stringBuilder=new StringBuilder("你去过的城市有:");
for (int j=0; j<place.length ;j++){
if (check[j]==true){
stringBuilder.append(place[j]).append("\t");
}
}
tv.setText(stringBuilder.toString());
}
});
builder.setNegativeButton("取消",null);
builder.create();
builder.show();
}
});
}
}