如何在Android日期选择器中突出显示日期?

3
如何在Android日期选择器中突出显示日期,就像下面的图片一样?在互联网上,我找到了一些解决方案,但它们并不使用“原始”的Android日期选择器。有没有一些解决方案,可以编辑我已经使用的Android日期选择器?

Datepicker with highlighted dates


1
这是一个自定义日期选择器。使用传统的日期选择器对话框不可能实现,但是使用MaterialDatePicker可能是可行的。如果支持MaterialDatePicker,您可以检查它;否则,您需要找到一些第三方库或创建自己的选择器。 - ADM
好的,谢谢你的回答,我在哪里可以找到关于MaterialDatePicker的文档? - Michael A.
您可以使用MaterialDatePicker选择一个范围,而不能选择特定的日期并将其突出显示。 - Skizo-ozᴉʞS ツ
好的,有没有办法在官方DatePicker中禁用我选择的日期? - Michael A.
@MichaelA. 如果我的回答对您有帮助,请考虑标记并点赞,我认为它已经详细到足以关闭这个问题了。既然您正在提出更多问题,那么您应该关闭这个问题,因为主要问题已经解决了。如果您想要开一个新问题并链接给我,那就开一个新问题,但请不要做变色龙问题 - Skizo-ozᴉʞS ツ
2个回答

3
官方的 Android 组件 DatePicker 并不支持此功能,因此每个人都在创建自定义视图或使用库来实现此功能。
正如 @ADM 所说,还有 MaterialDatePicker,其中包含的功能比旧的组件更多,您可以查看这篇 material design 文章以了解其功能。
有关更多信息,请参阅 MaterialDatePicker 文档。

编辑

要禁用日期,应使用 MaterialDatePicker-CalendarConstraints.DateValidator ,在其中您可以设置要禁用启用的日期。 在这种情况下,您无需创建自定义类,但应创建自己的实现,您应该overrideisValid(long)方法,在那里选择要显示为启用禁用的天数。
您应编写的代码示例已在此答案上编写:https://stackoverflow.com/a/61147318/4385913

0

类似于这个问题 - 现在可以通过扩展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 **/
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接