AlertDialog的简单使用,五个实例

我分别用了5个按钮来演示这五个例子的效果,我先来讲解一下这五个效果分别是什么吧:

  1. 一个警告对话框上面有两个按钮
  2. 一个警告对话框上面有两个选项
  3. 一个警告对话框上面有两个单选按钮
  4. 一个警告对话框上面有三个多选框和两个按钮
  5. 一个自定义的警告对话框

在注释中我把警告对话框简写为警告框了,下面来看下完整的代码:

AlertDialogActivity中的代码:

import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class AlertDialogActivity extends AppCompatActivity {

    private Button mBtn1, mBtn2, mBtn3, mBtn4, mBtn5;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_alert_dialog);
        // 初始化按钮组件
        mBtn1 = findViewById(R.id.alert_btn_1);
        mBtn2 = findViewById(R.id.alert_btn_2);
        mBtn3 = findViewById(R.id.alert_btn_3);
        mBtn4 = findViewById(R.id.alert_btn_4);
        mBtn5 = findViewById(R.id.alert_btn_5);

        onClick onClick = new onClick();
        // 给按钮添加监听事件
        mBtn1.setOnClickListener(onClick);
        mBtn2.setOnClickListener(onClick);
        mBtn3.setOnClickListener(onClick);
        mBtn4.setOnClickListener(onClick);
        mBtn5.setOnClickListener(onClick);

    }

    class onClick implements View.OnClickListener {

        @Override
        public void onClick(View v) {

            switch (v.getId()) {
                // 一个警告框,带两个按钮
                case R.id.alert_btn_1:
                    final AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogActivity.this);
                    // 设置标题
                    builder.setTitle("提示");
                    //设置内容
                    builder.setMessage("你想休息吗?");
                    // 设置一个按和点击事件
                    builder.setNegativeButton("不想", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(AlertDialogActivity.this, "到12点了必须睡,不管想不想都得执行!", Toast.LENGTH_SHORT).show();
                        }
                    });
                    // 设置一个按钮和点击事件
                    builder.setPositiveButton("想", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(AlertDialogActivity.this, "别想了,没12点不可能让你睡觉的!这就是命!", Toast.LENGTH_SHORT).show();
                        }
                    });
                    // 显示警告框,如果没有这句话,上面的都没有用,因为不会显示
                    builder.show();
                    break;

                // 一个警告框,带两个选项,注意:如果是选项,请不要设置内容(Message)否则内容将覆盖选项
                case R.id.alert_btn_2:
                    AlertDialog.Builder builder1 = new AlertDialog.Builder(AlertDialogActivity.this);
                    builder1.setTitle("你好,亲!请选择性别!");
                    // 通过字符串数组来表示选项的内容
                    final String sex[] = {"男", "女"};
                    builder1.setItems(sex, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            //点击选项后,输出选择的选项的内容
                            Toast.makeText(AlertDialogActivity.this, sex[which], Toast.LENGTH_SHORT).show();
                        }
                    });
                    builder1.show();
                    break;

                // 一个警告框,带两个单选按钮,也别设置内容(Message),否则可能会覆盖
                case R.id.alert_btn_3:
                    AlertDialog.Builder builder2 = new AlertDialog.Builder(AlertDialogActivity.this);
                    builder2.setTitle("请选择性别");
                    final String sex1[] = {"男", "女"};
                    // 此处的1代表默认选择的位置,我上面的字符数组来看,0是男,1是女
                    builder2.setSingleChoiceItems(sex1, 1, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            // 设置点击单选按钮后消失
                            dialog.dismiss();
                            Toast.makeText(AlertDialogActivity.this, sex1[which], Toast.LENGTH_SHORT).show();
                        }
                    });
                    // 设置点击警告框的其它的位置警告框是否消失,如果此处的setCancelable中的数值是false,那么点其它位置就不会消失了
                    builder2.setCancelable(true);
                    builder2.show();
                    break;

                // 一个警告框,带三个多选框和两个按钮,注意:也不要设置内容(Message),否则可能会覆盖
                case R.id.alert_btn_4:
                    AlertDialog.Builder builder3 = new AlertDialog.Builder(AlertDialogActivity.this);
                    // 多选框内容
                    final String hobby[] = {"编程", "唱歌", "运动"};
                    // 多选框的选择状态
                    boolean isChecked[] = {false, false, true};
                    builder3.setTitle("请选择你喜欢的兴趣");
                    builder3.setMultiChoiceItems(hobby, isChecked, new DialogInterface.OnMultiChoiceClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                            Toast.makeText(AlertDialogActivity.this, hobby[which] + ":" + isChecked, Toast.LENGTH_SHORT).show();
                        }
                    });

                    builder3.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(AlertDialogActivity.this, "已确定", Toast.LENGTH_SHORT).show();
                        }
                    });

                    builder3.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(AlertDialogActivity.this, "已取消", Toast.LENGTH_SHORT).show();
                        }
                    });

                    builder3.show();
                    break;

                //自定义的警告框,需要自己写一个布局文件,然后在加载这个布局文件
                case R.id.alert_btn_5:
                    AlertDialog.Builder builder4 = new AlertDialog.Builder(AlertDialogActivity.this);
                    builder4.setTitle("亲!请登录!");
                    // 将写好的布局文件加载然后赋值给view
                    View view = LayoutInflater.from(AlertDialogActivity.this).inflate(R.layout.layout_custom_dialog, null);
                    // 初始化这个控件中的组件
                    EditText txt = view.findViewById(R.id.dialog_name);
                    EditText pwd = view.findViewById(R.id.dialog_pwd);
                    Button btn = view.findViewById(R.id.dialog_btn);

                    // 设置自定义布局中的按钮的点击事件
                    btn.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            Toast.makeText(AlertDialogActivity.this, "恭喜你!登录成功!", Toast.LENGTH_SHORT).show();
                        }
                    });

                    // 将警告框的内容设置为view,也就是设置你写的那个布局中的内容
                    builder4.setView(view);
                    // 设置点击其它位置,警告框消失
                    builder4.setCancelable(true);
                    builder4.show();
                    break;
            }

        }
    }
}

因为第5个按钮演示的是自定义的AlertDialog,所以布局文件是自己写的,这里的布局文件名是:layout_custom_dialog.xml。

layout_custom_dialog.xml的代码如下:


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:orientation="vertical"
    android:padding="20dp">

    <EditText
        android:id="@+id/dialog_name"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:hint="请输入用户名"
        android:inputType="text" />

    <EditText
        android:id="@+id/dialog_pwd"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:hint="请输入密码"
        android:inputType="textPassword" />

    <Button
        android:id="@+id/dialog_btn"
        android:layout_width="200dp"
        android:layout_height="40dp"
        android:layout_margin="10dp"
        android:text="登录"
        android:textSize="15sp" />

LinearLayout>

AlertDialogActivity的布局文件如下:


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_horizontal"
        android:orientation="vertical">

        <Button
            android:id="@+id/alert_btn_1"
            android:layout_width="300dp"
            android:layout_height="50dp"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp"
            android:text="Style1"
            android:textAllCaps="false"
            android:textSize="18sp" />

        <Button
            android:id="@+id/alert_btn_2"
            android:layout_width="300dp"
            android:layout_height="50dp"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp"
            android:text="Style2"
            android:textAllCaps="false"
            android:textSize="18sp" />

        <Button
            android:id="@+id/alert_btn_3"
            android:layout_width="300dp"
            android:layout_height="50dp"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp"
            android:text="Style3"
            android:textAllCaps="false"
            android:textSize="18sp" />

        <Button
            android:id="@+id/alert_btn_4"
            android:layout_width="300dp"
            android:layout_height="50dp"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp"
            android:text="Style4"
            android:textAllCaps="false"
            android:textSize="18sp" />

        <Button
            android:id="@+id/alert_btn_5"
            android:layout_width="300dp"
            android:layout_height="50dp"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp"
            android:text="Style5"
            android:textAllCaps="false"
            android:textSize="18sp" />
    LinearLayout>


LinearLayout>

你可能感兴趣的:(Android开发)