如何使用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
相关产品推荐
相关产品推荐

