java - 适用于 android 的自定义 materila 日期范围选择器
问题描述
对于此视图,我从 github Prolific Interactive (material-calendarview) 中获取了参考或示例概念,因此我自定义了日期选择器,其范围选择为使用下面的绘图突出显示,您将看到日期选择器。所以我使用了范围选择方法来突出显示日期,我的观点与实际的 ui 设计不同,所以告诉我要知道这个问题,在下面我将发布我的代码
@Override
public void onRangeSelected(@NonNull MaterialCalendarView widget, @NonNull List<CalendarDay> dates) {
Log.d(TAG, "onRangeSelected: ");
dateList.clear();
for(int i=0; i<dates.size(); i++){
Log.d(TAG, "onRangeSelected: year "+dates.get(i).getYear());
Log.d(TAG, "onRangeSelected:day "+dates.get(i).getDay());
Log.d(TAG, "onRangeSelected:month "+dates.get(i).getMonth());
String output=String.valueOf(dates.get(i).getYear())+"-"+String.valueOf(dates.get(i).getMonth())+"-"+
String.valueOf(dates.get(i).getDay());
Log.d(TAG, "onRangeSelected: finaldate "+output);
dateList.add(output);
datesCenter.clear();
datesLeft.clear();
datesRight.clear();
}
Log.d(TAG, "onRangeSelected: final datelist "+String.valueOf( dateList));
List<LocalDate> localDateList = new ArrayList<>();
for (String string : dateList) {
LocalDate calendar = getLocalDate(string);
if (calendar != null) {
localDateList.add(calendar);
Log.d(TAG, "onRangeSelected: localdatesize"+localDateList.size());
}
}
size=localDateList.size();
for (LocalDate localDate : localDateList) {
boolean right = false;
boolean left = false;
for (LocalDate day1 : localDateList) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
if (localDate.isEqual(day1.plusDays(1))) {
left = true;
}
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
if (day1.isEqual(localDate.plusDays(1))) {
right = true;
}
}
}
if (left && right) {
datesCenter.add(CalendarDay.from(localDate));
} else if (left) {
datesLeft.add(CalendarDay.from(localDate));
} else if (right) {
datesRight.add(CalendarDay.from(localDate));
}
}
setDecor(datesCenter, R.drawable.ic_green);
setDecor(datesLeft, R.drawable.ic_ellipse_30);
setDecor(datesRight, R.drawable.ic_ellipse_30);
}
void setDecor(List<CalendarDay> calendarDayList, int drawable) {
widget.addDecorators(new EventDecorator(MainActivity.this
, drawable
, calendarDayList));
}
解决方案
推荐阅读
- azure - Azure 订阅迁移到新租户:保存 RBAC
- openvpn - 是否可以限制 azure vpn 用户在使用 AD auth 时仅连接公司设备
- html - 表格单元格内的自定义文本样式
- java - 我将如何去创建一个高级计算器?
- java - 当我遇到此问题时我该怎么办 JSP 问题:处理操作时出现 HTTP 500 内部服务器错误状态?
- python - 帖子详细信息视图上的 django 评论表单
- c - RPi 4 GPIO在上升和下降触发器上的中断在C中不起作用
- refactoring - 函数调用作为另一个函数参数(重构)
- c - 为什么长期运行的程序总是要收割他们的僵尸孩子?
- postgresql - 在 PostgreSQL 中创建日期后每 3 个月重复一次未来日期