Android Studio 学习记录-对话框

目录

提醒对话框 AlertDialog

日期对话框 DatePickerDialog

时间对话框 TimePickerDialog


        本文介绍介绍几种常用的对话框控件,包括:如何使用提醒对话框处理不同的选项,如何使用日期对话框获取用户选择的日期,如何使用时间对话框获取用户选择的时间。

提醒对话框 AlertDialog

        AlertDialog名为提醒对话框,它是Android中最常用的对话框,可以完成常见的交互操作,例如提示、确认、选择等功能。由于AlertDialog没有公开的构造方法,因此必须借助建造器AlertDialog.Builder才能完成参数设置,AlertDialog.Builder常用的方法说明如下。

  • setIcon:设置对话框的标题图标。
  • setTitle:设置对话框的标题文本。
  • setMessage:设置对话框的内容文本。
  • setPositiveButton:设置肯定按钮的信息,包括按钮文本和点击监听器。
  • setNegativeButton:设置否定按钮的信息,包括按钮文本和点击监听器。
  • setNeutralButton:设置中性按钮的信息,包括按钮文本和点击监听器,该方法比较少用。

        通过AlertDialog.Builder设置完对话框参数,还需调用建造器的create方法才能生成对话框实例。最后调用对话框实例的show方法,在页面上弹出提醒对话框。

下面是构建并显示提醒对话框的Java代码例子:

//创建提醒对话框的建造器
            android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(this);
            builder.setTitle("尊敬的用户"); // 设置对话框的标题文本
            builder.setMessage("你真的要卸载我吗?"); // 设置对话框的内容文本
            // 设置对话框的肯定按钮文本及其点击监听器
            builder.setPositiveButton("残忍卸载", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    tv_alert.setText("虽然依依不舍,但是只能离开了");
                }
            });
            // 设置对话框的否定按钮文本及其点击监听器
            builder.setNegativeButton("我再想想",new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    tv_alert.setText("让我再陪你三百六十五个日夜");
                }
            });
            android.app.AlertDialog alert = builder.create();//根据建造器构建提醒对话框对象
            alert.show();//显示提醒对话框

 

日期对话框 DatePickerDialog

        虽然EditText提供了inputType="date"的日期输入,但是很少有人会手工输入完整日期,况且EditText还不支持“****年**月**日”这样的中文日期,所以系统提供了专门的日期选择器DatePicker,供用户选择具体的年、月、日。不过,DatePicker并非弹窗模式,而是在当前页面占据一块区域,并且不会自动关闭。按习惯来说,日期控件应该弹出对话框,选择完日期就要自动关闭对话框。因此,很少直接在界面上显示DatePicker,而是利用已经封装好的日期选择对话框DatePickerDialog。

        DatePickerDialog相当于在AlertDialog上装载了DatePicker,编码时只需调用构造方法设置当前的年、月、日,然后调用show方法即可弹出日期对话框。日期选择事件则由监听器OnDateSetListener负责响应,在该监听器的onDateSet方法中,开发者获取用户选择的具体日期,再做后续处理。特别注意onDateSet的月份参数,它的起始值不是1而是0.也就是说,一月份对应的参数值为0,十二月份对应的参数值为11,中间月份的数值以此类推。

         下面是使用日期对话框的Java代码例子,包括弹出日期对话和处理日期监听事件:

public class DatePickerDialog extends AppCompatActivity implements
        View.OnClickListener, android.app.DatePickerDialog.OnDateSetListener {
    private TextView tv_date; // 声明一个文本视图对象
    private DatePicker dp_date; // 声明一个日期选择器对象

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_date_picker_dialog);
        tv_date = findViewById(R.id.tv_date);
        // 从布局文件中获取名叫dp_date的日期选择器
        dp_date = findViewById(R.id.dp_date);
        findViewById(R.id.btn_date).setOnClickListener(this);
        findViewById(R.id.btn_ok).setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.btn_date) {
            // 获取日历的一个实例,里面包含了当前的年月日
            Calendar calendar = Calendar.getInstance();
            // 构建一个日期对话框,该对话框已经集成了日期选择器。
            // DatePickerDialog的第二个构造参数指定了日期监听器
            android.app.DatePickerDialog dialog = new android.app.DatePickerDialog(this, this,
                    calendar.get(Calendar.YEAR), // 年份
                    calendar.get(Calendar.MONTH), // 月份
                    calendar.get(Calendar.DAY_OF_MONTH)); // 日子
            dialog.show(); // 显示日期对话框
        } else if (v.getId() == R.id.btn_ok) {
            // 获取日期选择器dp_date设定的年月份
            String desc = String.format("您选择的日期是%d年%d月%d日",
                    dp_date.getYear(), dp_date.getMonth() + 1, dp_date.getDayOfMonth());
            tv_date.setText(desc);
        }
    }

    // 一旦点击日期对话框上的确定按钮,就会触发监听器的onDateSet方法
    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
        // 获取日期对话框设定的年月份
        String desc = String.format("您选择的日期是%d年%d月%d日",
                year, monthOfYear + 1, dayOfMonth);
        tv_date.setText(desc);
    }
}

时间对话框 TimePickerDialog

        既然有了日期选择器,还得有对应的时间选择器。同样,在实际开发中也很少直接用TimePicker,而是用封装好的时间选择对话框TimePickerDialog。该对话框的用法类似DatePickerDialog,不同之处主要有两个:

  1. 构造方法传入的是当前的小时与分钟,最后一个参数表示是否采取24小时制,一般为true表示小时的数值范围为0~23;若为false则表示采取12小时制。
  2. 时间选择监听器为OnTimeSetListener,对应需要实现onTimeSet方法,在该方法中可获得用户选择的小时和分钟。

         下面是使用时间对话框的Java代码例子,包括弹出时间对话和处理时间监听事件:

public class TimePickerDialog extends AppCompatActivity implements
        View.OnClickListener, android.app.TimePickerDialog.OnTimeSetListener {
    private TextView tv_time; // 声明一个文本视图对象
    private TimePicker tp_time; // 声明一个时间选择器对象

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_time_picker_dialog);
        tv_time = findViewById(R.id.tv_time);
        // 从布局文件中获取名叫tp_time的时间选择器
        tp_time = findViewById(R.id.tp_time);
        findViewById(R.id.btn_time).setOnClickListener(this);
        findViewById(R.id.btn_ok).setOnClickListener(this);
    }


    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.btn_time) {
            // 获取日历的一个实例,里面包含了当前的时分秒
            Calendar calendar = Calendar.getInstance();
            // 构建一个时间对话框,该对话框已经集成了时间选择器。
            // TimePickerDialog的第二个构造参数指定了时间监听器
            android.app.TimePickerDialog dialog = new android.app.TimePickerDialog(this, this,
                    calendar.get(Calendar.HOUR_OF_DAY), // 小时
                    calendar.get(Calendar.MINUTE), // 分钟
                    true); // true表示24小时制,false表示12小时制
            dialog.show(); // 显示时间对话框
        } else if (v.getId() == R.id.btn_ok) {
            // 获取时间选择器tp_time设定的小时和分钟
            String desc = String.format("您选择的时间是%d时%d分",
                    tp_time.getCurrentHour(), tp_time.getCurrentMinute());
            tv_time.setText(desc);
        }
    }

    // 一旦点击时间对话框上的确定按钮,就会触发监听器的onTimeSet方法
    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        // 获取时间对话框设定的小时和分钟
        String desc = String.format("您选择的时间是%d时%d分", hourOfDay, minute);
        tv_time.setText(desc);
    }
}
  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Studio 中的多选对话框可以使用 AlertDialog.Builder 类来创建。您可以使用 setMultiChoiceItems() 方法设置选项列表和初始选中状态,并使用 setPositiveButton() 和 setNegativeButton() 方法设置对话框的确认和取消按钮。以下是一个示例代码片段: ``` final String[] items = {"选项1", "选项2", "选项3", "选项4"}; // 用来记录多选对话框中每个选项的状态 final boolean[] checkedItems = {false, false, false, false}; AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("多选对话框"); builder.setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { // 在这里处理每个选项的点击事件 checkedItems[which] = isChecked; } }); 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) { // 在这里处理点击取消按钮后的逻辑 } }); AlertDialog dialog = builder.create(); dialog.show(); ``` 在这个示例中,items 数组中包含了要显示的选项列表,checkedItems 数组用来记录每个选项的初始选中状态。在 setMultiChoiceItems() 方法中,我们将这些信息传递给对话框,并使用 OnMultiChoiceClickListener 接口处理每个选项的点击事件。在确认和取消按钮的点击事件中,可以编写相应的逻辑来处理用户的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值