Android开发中AlertDialog提示框的使用(超详细)
程序员文章站
2022-05-31 20:26:48
...
今天,统计记录一下AlertDialog提示框的常见用法:
1、标准提示框
2、下拉列表提示框
3、下拉单选框提示框
4、下拉多选框提示框
5、自定义提示框(重要)
效果如下:
activity_alertdialog.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">
<Button
android:id="@+id/alertdialog_btnStandardAlertDialog"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="标准提示框"/>
<Button
android:id="@+id/alertdialog_btnListAlertDialog"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="下拉列表提示框"/>
<Button
android:id="@+id/alertdialog_btnRadioButtonListAlertDialog"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="下拉单选框提示框"/>
<Button
android:id="@+id/alertdialog_btnCheckBoxListAlertDialog"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="下拉多选框提示框"/>
<Button
android:id="@+id/alertdialog_btnCustomAlertDialog"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="自定义提示框"/>
</LinearLayout>
自定义提示框布局文件item_customalertdialog.xml如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="10dp"
xmlns:android="http://schemas.android.com/apk/res/android">
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="请输入用户名"
android:inputType="textPersonName"
android:textSize="14dp"
android:layout_marginBottom="5dp"/>
<EditText
android:id="@+id/editText2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="请输入密码"
android:textSize="14dp"
android:inputType="textPassword" />
</LinearLayout>
AlertDialogDemo.java的代码如下:
public class AlertDialogDemo extends AppCompatActivity implements View.OnClickListener {
public String[] cities = {"广州", "上海", "北京", "香港", "澳门"};
public String toastText = "";
public HashSet<String> hashSet;
public Button btnStandardAlertDialog, btnListAlertDialog, btnRadioButtonListAlertDialog
, btnCheckBoxListAlertDialog, btnCustomAlertDialog;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_alertdialog);
componentInit();
componentSetOnClickListener();
}
public void componentInit(){
btnStandardAlertDialog = findViewById(R.id.alertdialog_btnStandardAlertDialog);
btnListAlertDialog = findViewById(R.id.alertdialog_btnListAlertDialog);
btnRadioButtonListAlertDialog = findViewById(R.id.alertdialog_btnRadioButtonListAlertDialog);
btnCheckBoxListAlertDialog = findViewById(R.id.alertdialog_btnCheckBoxListAlertDialog);
btnCustomAlertDialog = findViewById(R.id.alertdialog_btnCustomAlertDialog);
}
public void componentSetOnClickListener(){
btnStandardAlertDialog.setOnClickListener(this);
btnListAlertDialog.setOnClickListener(this);
btnRadioButtonListAlertDialog.setOnClickListener(this);
btnCheckBoxListAlertDialog.setOnClickListener(this);
btnCustomAlertDialog.setOnClickListener(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.alertdialog_btnStandardAlertDialog:{
AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogDemo.this);
builder.setTitle("提示");
builder.setIcon(R.drawable.ic_launcher_foreground);
builder.setMessage("这是一个标准提示框!");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.setNeutralButton("忽略", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.show();
break;
}
case R.id.alertdialog_btnListAlertDialog:{
AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogDemo.this);
builder.setTitle("提示");
builder.setIcon(R.mipmap.ic_launcher);
builder.setItems(cities, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(AlertDialogDemo.this, cities[which], Toast.LENGTH_SHORT).show();
}
});
builder.show();
break;
}
case R.id.alertdialog_btnRadioButtonListAlertDialog:{
AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogDemo.this);
builder.setTitle("提示");
builder.setIcon(R.drawable.ic_launcher_foreground);
builder.setSingleChoiceItems(cities, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
toastText = cities[which];
}
});
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(AlertDialogDemo.this, "您选择了:" + toastText, Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.show();
break;
}
case R.id.alertdialog_btnCheckBoxListAlertDialog:{
hashSet = new HashSet<>();
AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogDemo.this);
builder.setTitle("提示");
builder.setIcon(R.drawable.ic_launcher_foreground);
builder.setMultiChoiceItems(cities, null, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if (isChecked){
hashSet.add(cities[which]);
} else {
hashSet.remove(cities[which]);
}
}
});
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
StringBuilder stringBuilder = new StringBuilder();
for (String str : hashSet){
stringBuilder.append(str);
}
Toast.makeText(AlertDialogDemo.this, "您选择了:" + String.valueOf(stringBuilder), Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.show();
break;
}
case R.id.alertdialog_btnCustomAlertDialog:{
AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogDemo.this);
builder.setTitle("提示");
builder.setIcon(R.drawable.ic_launcher_foreground);
View view = LayoutInflater.from(this).inflate(R.layout.item_customalertdialog, null);
builder.setView(view);
final EditText etUserName = view.findViewById(R.id.editText);
final EditText etPassword = view.findViewById(R.id.editText2);
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String userName = etUserName.getText().toString().trim();
String Password = etPassword.getText().toString().trim();
Toast.makeText(AlertDialogDemo.this, "用户名:" + userName + "\r\n"
+ "密码:" + Password, Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.show();
break;
}
}
}
}
推荐阅读
-
Android 开发之Dialog中隐藏键盘的正确使用方法
-
Android 开发之Dialog中隐藏键盘的正确使用方法
-
Android系统开发中log的使用方法及简单的原理
-
在android开发中尽量不要使用中文路径的问题详解
-
Android开发中超好用的正则表达式工具类RegexUtil完整实例
-
Android系统开发中log的使用方法及简单的原理
-
在android开发中尽量不要使用中文路径的问题详解
-
Android开发中button按钮的使用及动态添加组件方法示例
-
Android开发 RadioButton使用中遇到的问题与解决方法
-
Android开发实现AlertDialog中View的控件设置监听功能分析