You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Android Material Date Picker实现多选日期并获取所有选中结果

Material Date Picker实现任意数量日期多选教程

系统原生日期选择器默认仅支持单选或范围选择,没有内置多选能力,自定义实现成本较高,直接使用Material Date Picker即可快速满足需求,你当前的代码为默认单选模式,按以下步骤修改即可:

前置依赖检查

确保项目中引入的Material Components版本不低于1.4.0,build.gradle依赖参考:

implementation 'com.google.android.material:material:1.10.0' // 推荐使用最新稳定版

完整实现代码

// 构建多选模式的日期选择器,泛型修改为List<Long>存储多个选中日期的时间戳
MaterialDatePicker.Builder<List<Long>> builder = MaterialDatePicker.Builder.datePicker();
builder.setTitleText("选择发布日期");
// 设置选择模式为多选,支持选中任意数量的日期
builder.setSelectionMode(MaterialDatePicker.SELECTION_MODE_MULTIPLE);

// 可选配置:设置默认选中的日期,传入对应日期的时间戳列表即可
// List<Long> defaultSelected = new ArrayList<>();
// defaultSelected.add(System.currentTimeMillis());
// builder.setSelection(defaultSelected);

MaterialDatePicker<List<Long>> materialDatePicker = builder.build();
materialDatePicker.show(getParentFragmentManager(), "DATE_PICKER");

// 确认选择后获取所有选中日期
materialDatePicker.addOnPositiveButtonClickListener(selection -> {
    // selection为所有选中日期的UTC时间戳列表(单位:毫秒)
    StringBuilder dateText = new StringBuilder();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
    for (Long timeStamp : selection) {
        dateText.append(sdf.format(new Date(timeStamp))).append(" ");
    }
    etDatesToPublish.setText(dateText.toString().trim());
});

可选扩展

如果需要限制最多可选择的日期数量,可在回调中判断selection.size(),超过上限时给用户弹出提示即可。

内容的提问来源于stack exchange,提问作者Emmanuel Njorodongo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 02:15:03