diff --git a/library/src/main/java/com/github/sundeepk/compactcalendarview/CompactCalendarController.java b/library/src/main/java/com/github/sundeepk/compactcalendarview/CompactCalendarController.java
index 9a22199c..9743e303 100755
--- a/library/src/main/java/com/github/sundeepk/compactcalendarview/CompactCalendarController.java
+++ b/library/src/main/java/com/github/sundeepk/compactcalendarview/CompactCalendarController.java
@@ -105,6 +105,7 @@ class CompactCalendarController {
private int currentSelectedDayTextColor;
private int calenderBackgroundColor = Color.WHITE;
private int otherMonthDaysTextColor;
+ private int pastDaysTextColor;
private TimeZone timeZone;
/**
@@ -128,6 +129,7 @@ private enum Direction {
this.calenderTextColor = calenderTextColor;
this.currentSelectedDayBackgroundColor = currentSelectedDayBackgroundColor;
this.otherMonthDaysTextColor = calenderTextColor;
+ this.pastDaysTextColor = calenderTextColor;
this.velocityTracker = velocityTracker;
this.multiEventIndicatorColor = multiEventIndicatorColor;
this.eventsContainer = eventsContainer;
@@ -146,6 +148,7 @@ private void loadAttributes(AttributeSet attrs, Context context) {
calenderTextColor = typedArray.getColor(R.styleable.CompactCalendarView_compactCalendarTextColor, calenderTextColor);
currentDayTextColor = typedArray.getColor(R.styleable.CompactCalendarView_compactCalendarCurrentDayTextColor, calenderTextColor);
otherMonthDaysTextColor = typedArray.getColor(R.styleable.CompactCalendarView_compactCalendarOtherMonthDaysTextColor, otherMonthDaysTextColor);
+ pastDaysTextColor = typedArray.getColor(R.styleable.CompactCalendarView_compactCalendarPastDaysTextColor, calenderTextColor);
currentSelectedDayBackgroundColor = typedArray.getColor(R.styleable.CompactCalendarView_compactCalendarCurrentSelectedDayBackgroundColor, currentSelectedDayBackgroundColor);
currentSelectedDayTextColor = typedArray.getColor(R.styleable.CompactCalendarView_compactCalendarCurrentSelectedDayTextColor, calenderTextColor);
calenderBackgroundColor = typedArray.getColor(R.styleable.CompactCalendarView_compactCalendarBackgroundColor, calenderBackgroundColor);
@@ -837,11 +840,17 @@ void drawMonth(Canvas canvas, Calendar monthToDrawCalender, int offset) {
//offset by one because we want to start from Monday
int firstDayOfMonth = getDayOfWeek(monthToDrawCalender);
- boolean isSameMonthAsToday = monthToDrawCalender.get(Calendar.MONTH) == todayCalender.get(Calendar.MONTH);
- boolean isSameYearAsToday = monthToDrawCalender.get(Calendar.YEAR) == todayCalender.get(Calendar.YEAR);
+ int currentDayOfMonth = currentCalender.get(Calendar.DAY_OF_MONTH);
+ int todayDayOfMonth = todayCalender.get(Calendar.DAY_OF_MONTH);
+
+ boolean isSameMonthAsToday = monthToDrawCalender.get(Calendar.MONTH) == todayCalender.get(Calendar.MONTH)
+ && monthToDrawCalender.get(Calendar.YEAR) == todayCalender.get(Calendar.YEAR);
boolean isSameMonthAsCurrentCalendar = monthToDrawCalender.get(Calendar.MONTH) == currentCalender.get(Calendar.MONTH) &&
monthToDrawCalender.get(Calendar.YEAR) == currentCalender.get(Calendar.YEAR);
- int todayDayOfMonth = todayCalender.get(Calendar.DAY_OF_MONTH);
+ boolean isPastMonth = monthToDrawCalender.get(Calendar.YEAR) < todayCalender.get(Calendar.YEAR)
+ || monthToDrawCalender.get(Calendar.YEAR) == todayCalender.get(Calendar.YEAR)
+ && monthToDrawCalender.get(Calendar.MONTH) < todayCalender.get(Calendar.MONTH);
+
boolean isAnimatingWithExpose = animationStatus == EXPOSE_CALENDAR_ANIMATION;
int maximumMonthDay = monthToDrawCalender.getActualMaximum(Calendar.DAY_OF_MONTH);
@@ -879,13 +888,15 @@ void drawMonth(Canvas canvas, Calendar monthToDrawCalender, int offset) {
} else {
int day = ((dayRow - 1) * 7 + dayColumn + 1) - firstDayOfMonth;
int defaultCalenderTextColorToUse = calenderTextColor;
- if (currentCalender.get(Calendar.DAY_OF_MONTH) == day && isSameMonthAsCurrentCalendar && !isAnimatingWithExpose) {
+ if (currentDayOfMonth == day && isSameMonthAsCurrentCalendar && !isAnimatingWithExpose) {
drawDayCircleIndicator(currentSelectedDayIndicatorStyle, canvas, xPosition, yPosition, currentSelectedDayBackgroundColor);
defaultCalenderTextColorToUse = currentSelectedDayTextColor;
- } else if (isSameYearAsToday && isSameMonthAsToday && todayDayOfMonth == day && !isAnimatingWithExpose) {
+ } else if (isSameMonthAsToday && todayDayOfMonth == day && !isAnimatingWithExpose) {
// TODO calculate position of circle in a more reliable way
drawDayCircleIndicator(currentDayIndicatorStyle, canvas, xPosition, yPosition, currentDayBackgroundColor);
defaultCalenderTextColorToUse = currentDayTextColor;
+ } else if (isPastMonth || isSameMonthAsToday && todayDayOfMonth > day) {
+ defaultCalenderTextColorToUse = pastDaysTextColor;
}
if (day <= 0) {
if (displayOtherMonthDays) {
diff --git a/library/src/main/res/values/attrs.xml b/library/src/main/res/values/attrs.xml
index be80746e..d0aee65e 100644
--- a/library/src/main/res/values/attrs.xml
+++ b/library/src/main/res/values/attrs.xml
@@ -29,5 +29,6 @@
+