Android 中对话框的使用
- 对话框的使用
- 对话框的分类
- 使用AlertDialog建立对话框
- AlertDialog的样式多变,就是因为设置对话框内容时的样式 多变,AlertDialog提供了6种方法设置对话框的内容,如表所示。
- 实例
- XML文件
对话框的使用
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
对话框的分类
在日常的App使用中经常看到对话框,可以说对话框的出现使得App不再那么单调。Android中提供了丰富的对话框支持,日常开发中会经常使用到如下表所示对的4种对话框:
对话框 | 说明 |
AlertDialog | 功能最丰富,实际应用最该的对话框 |
ProgressDialog | 进度对话框,只是用来选择日期 |
DataPickerDialog | 日期选择对话框,只是用来选择日期 |
TimePickerDialog | 时间选择对话框,只是用来选择时间 |
使用AlertDialog建立对话框
AlertDialog是上述4种对话框中功能最强大、用法最灵活的一种,同时它也是其他3种对话框的父类。
使用AlertDialog生成的对话框样式多变,但是基本样式总会包含4个区域:图标区、标题区、内容区、按钮区。
创建一个AlertDialog一般需要如下几个步骤:
- 创建AlertDialog.builder对象。
- 调用AlertDialog.Builder的setTitle()或setCustomTitle()方法设置标题。
- 调用AlertDialog.Builder的setIcon()设置图标。
- 调用AlertDialog.Builder的相关设置方法设置对话框内容。
- 调用AlertDialog.Builder的setPositiveButton()、setNegativeButton()或setNeutralButton()方法添加多个按钮。
- 调用AlertDialog.Builder的create()方法创建AlertDialog对象,再调用AlertDialog对象的show()方法将该对话框显示出来。
AlertDialog的样式多变,就是因为设置对话框内容时的样式 多变,AlertDialog提供了6种方法设置对话框的内容,如表所示。
方法 | 说明 |
setMessage() | 设置对话内容为简单文本 |
setItems() | 设置对话内容为简单列表项 |
setSingleChoiceItems() | 设置对话框内容为单选列表项 |
setMultichoiceItems() | 设置对话框内容为多选列表项 |
setAdapter() | 设置对话框内容为自定义列表项 |
setView() | 设置对话框内容为自定义View |
实例
XML文件
Button的使用详见************
layout_button.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/Concel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
<!-- 按钮点击事件调用方法 -->
android:onClick="simpleAlertDialog"
android:text="@string/concel"
android:textSize="20sp" />
<Button
android:id="@+id/symbollist"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/symbollist"
android:onClick="simpleListAlertDialog"
android:layout_marginBottom="8dp"
android:textSize="20sp"/>
<Button
android:id="@+id/singlelist"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/singlelist"
android:onClick="singleChioceDialog"
android:layout_marginBottom="8dp"
android:textSize="20sp"/>
<Button
android:id="@+id/multiplelist"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/multiplelist"
android:onClick="multipleChoiceDialog"
android:layout_marginBottom="8dp"
android:textSize="20sp"/>
<Button
android:id="@+id/diylist"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/diylist"
android:onClick="diyDialog"
android:layout_marginBottom="8dp"
android:textSize="20sp"/>
</LinearLayout>
register_form.xml
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="手机号:"
android:textColor="#09f"
android:textSize="17sp"
android:paddingLeft="16dp"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="请填写手机号码"
android:paddingLeft="8dp"
android:selectAllOnFocus="true"/>
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="密 码:"
android:textColor="#09f"
android:textSize="17sp"
android:paddingLeft="16dp"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="请填写密码"
android:paddingLeft="8dp"
android:selectAllOnFocus="true"/>
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="确认密码:"
android:paddingLeft="16dp"
android:textColor="#004"
android:textSize="16sp"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="请确认密码"
android:paddingLeft="8dp"
android:selectAllOnFocus="true"/>
</TableRow>
</TableLayout>
string.xml
<resources>
<string name="app_name">March 18</string>
<string name="concel">点击了[取消]按钮</string>
<string name="symbollist">简单列表对话框</string>
<string name="singlelist">单选列表对话框</string>
<string name="multiplelist">多选列表对话框</string>
<string name="diylist">自定义VIEW对话框</string>
</resources>
MainActivity
package com.example.march18;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TableLayout;
import android.widget.TableRow;
public class MainActivity extends AppCompatActivity {
//定义几个按钮用于点击事件表现不同的对话框
private Button alert1;
private Button alert2;
private Button alert3;
//定义字符串数组用于给多选对话框提供选项
private String[] items = new String[]{"火锅","可乐","奶茶","炸鸡","红烧肉"};
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_button);
//为Java中按钮对象绑定对应的XML中的button
alert1=findViewById(R.id.Concel);
alert2=findViewById(R.id.symbollist);
alert3=findViewById(R.id.singlelist);
}
//点击按钮显示简单对话框
public void simpleAlertDialog(View view){
AlertDialog.Builder builder = new AlertDialog.Builder(this)
.setTitle("简单对话框")//对话框标题
.setIcon(R.drawable.icon_dialog)//对话框图标
.setMessage("Hello\n你好");//对话框中显示的内容
setPositiveButtton(builder);
setNegativeButtton(builder).create().show();
}
//点击按钮显示简单列表对话框
public void simpleListAlertDialog(View view){
AlertDialog.Builder builder = new AlertDialog.Builder(this)
.setTitle("简单列表对话框")
.setIcon(R.drawable.icon_dialog)
.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
alert2.setText("您选中了:"+items[which]);
}
});
setPositiveButtton(builder);
setNegativeButtton(builder).create().show();
}
//点击按钮显示单选列表对话框
public void singleChioceDialog(View view){
AlertDialog.Builder builder = new AlertDialog.Builder(this)
.setTitle("单选列表对话框")
.setIcon(R.drawable.icon_dialog)
//设置单选列表项,默认选中第一项(索引为0)
.setSingleChoiceItems(items, 0,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
alert3.setText("您选中了"+items[which]);
}
});
setPositiveButtton(builder);
setNegativeButtton(builder).create().show();
}
//点击按钮显示多选列表对话框
public void multipleChoiceDialog(View view){
AlertDialog.Builder builder = new AlertDialog.Builder(this)
.setTitle("多选列表对话框")
.setIcon(R.drawable.icon_dialog)
.setMultiChoiceItems(items,new boolean[]{true,false,false,false,false},null);
setPositiveButtton(builder);
setNegativeButtton(builder).create().show();
}
//点击按钮显示自定义View对话框
public void diyDialog(View view){
TableLayout registerForm = (TableLayout)getLayoutInflater()
.inflate(R.layout.register_form,null);
new AlertDialog.Builder(this).setTitle("自定义对话框")
.setIcon(R.drawable.icon_dialog)
.setView(registerForm)
.setPositiveButton("注册", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//开始注册的逻辑编写
}
}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//取消注册
}
}).create().show();
}
private AlertDialog.Builder setPositiveButtton(
AlertDialog.Builder builder){
return builder.setPositiveButton("确认",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
alert1.setText("点击了【确认】按钮");
}
});
}
private AlertDialog.Builder setNegativeButtton(
AlertDialog.Builder builder){
return builder.setNegativeButton("取消",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
alert1.setText("点击了【取消】按钮");
}
});
}
}