安卓日历视图用于展示事件

28

我想展示一个日历,并在日期上使用不同的颜色显示事件,类似于默认的日历应用程序。但是我在默认的日历视图上没有看到任何此类API。

有人可以请指导我该如何继续进行吗?我应该扩展默认的日历并添加自己的功能吗?还是应该使用5x5文本框、PageViewer和片段?


相关/重复:Android日历视图 - blahdiblah
5个回答

19

内置的CalendarView小部件不支持更改月视图中日历单元格的颜色。请参见源代码

您可以尝试以下两种方法:

  1. 从CalendarView扩展并自己实现onDraw方法。您需要重新实现所有现有的绘图行为,包括以下4个方法:

    protected void onDraw(Canvas canvas) {
        drawBackground(canvas);
        drawWeekNumbersAndDates(canvas);
        drawWeekSeparators(canvas);
        drawSelectedDateVerticalBars(canvas);
    }
    
  2. 实现自己的CalendarView以允许自定义单元格。我建议这个项目是一个好的起点,因为它已经支持自定义单元格。


1
其他类似CalendarView的库项目:android-calendar-viewCaldroid - blahdiblah
5
有人知道有哪些库可以扩展Android的CalendarView,并允许轻松定制日期单元格的可绘制项吗?我看到很多建议的库,但它们实现了自己的日历视图,而不是扩展自Android的CalendarView - Shuwn Yuan Tee
2
目前没有 onDraw 方法。 - CoolMind

14

上个月,我通过Caldroid https://github.com/roomorama/Caldroid成功实现了一个小型日历视图。

这个库使用起来很灵活,而且不难实现自定义的日历视图,只需要从CalendarView中实现onDraw方法即可。

可以检查一下我创建的视图(只需按照文档进行操作):

使用Caldroid创建的自定义日历视图

当然,你还可以进一步拓展它。


5
我已经编写了自己的CalendarView,与Google日历中看到的类似。它可以滚动月份、添加事件,并且是一个Gradle项目:https://github.com/SundeepK/CompactCalendarView。它使用绘图工具进行所有绘制,因此很容易更改以实现任何您想要的效果。

4

0

如何通过使用android:dateTextAppearance和setDateTextAppearance(int)更改特定日期的颜色呢? 曾经有这样的描述: change color of calendar dates android 你可以试试这个方法


我不想改变单元格的颜色。我想根据每个事件的时间绘制单元格的一部分。 - Karthik Andhamil

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