DatePicker
并不支持此功能,因此每个人都在创建自定义视图或使用库来实现此功能。MaterialDatePicker
,其中包含的功能比旧的组件更多,您可以查看这篇 material design 文章以了解其功能。 MaterialDatePicker
文档。
MaterialDatePicker-CalendarConstraints.DateValidator
,在其中您可以设置要禁用或启用的日期。 在这种情况下,您无需创建自定义类,但应创建自己的实现,您应该override
isValid(long)
方法,在那里选择要显示为启用或禁用的天数。类似于这个问题 - 现在可以通过扩展DayViewDecorator
类来突出显示Material DatePicker中有效日期的背景。
在材料目录中有官方实现。
非常简化的版本大致如下:
class BackgroundHighlightDecorator extends DayViewDecorator {
private final List<Date> myDates = /* your valid dates */;
private ColorStateList backgroundHighlightColor;
@Override
public void initialize(Context context) {
int highlightColor = Color.BLUE;
backgroundHighlightColor = ColorStateList.valueOf(highlightColor);
}
@Override
public ColorStateList getBackgroundColor(Context context, int year, int month, int day, boolean valid, boolean selected) {
return valid && !selected && shouldShowHighlight(year, month, day)
? backgroundHighlightColor
: null;
}
private boolean shouldShowHighlight(int year, int month, int day) {
if (/* your condition for validity */) {
return true;
} else {
return false;
}
}
/** CREATOR code goes here **/
}
MaterialDatePicker
可能是可行的。如果支持MaterialDatePicker
,您可以检查它;否则,您需要找到一些第三方库或创建自己的选择器。 - ADM变色龙问题
。 - Skizo-ozᴉʞS ツ