https://mimisongsong.tistory.com/68
윗 글의 2탄입니다.
윗 글을 따라하시고 이어서 따라하시면 됩니다.
토요일, 일요일 주말의 색상을 변경시켜주려고 합니다.
일단 윗 글과 다르게 수정할 부분은 바로 버전입니다.
(아래 주소에서 자세히 확인)
https://github.com/prolificinteractive/material-calendarview
현재, 2.0.1이 2019년 마지막 업데이트인데요. 2.0.0 업데이트부터는 copyTo()를 사용할 수 없어, calendar 변수에 담아줄 수가 없습니다.
그래서 버전을 1.6.1으로 낮춰줍니다.
1.6.1인 이유는 2.0.0 바로 전 버전이기 때문입니다.
// CalenderView
implementation 'com.github.prolificinteractive:material-calendarview:1.6.1'
으로 버전을 바꿔주고
SaturdayDecorator 과 SundayDecorator class를 추가해서 아래의 코드를 넣어줍니다.
SaturdayDecorator.kt
package com.example.calendartest
import android.graphics.Color
import android.text.style.ForegroundColorSpan
import com.prolificinteractive.materialcalendarview.CalendarDay
import com.prolificinteractive.materialcalendarview.DayViewDecorator
import com.prolificinteractive.materialcalendarview.DayViewFacade
import java.util.Calendar
class SaturdayDecorator: DayViewDecorator {
private val calendar = Calendar.getInstance()
override fun shouldDecorate(day: CalendarDay?): Boolean {
day?.copyTo(calendar)
val saturday = calendar.get(Calendar.DAY_OF_WEEK)
return saturday == Calendar.SATURDAY
}
override fun decorate(view: DayViewFacade?) {
view?.addSpan(object: ForegroundColorSpan(Color.BLUE){})
}
}
SundayDecorator.kt
package com.example.calendartest
import android.graphics.Color
import android.text.style.ForegroundColorSpan
import com.prolificinteractive.materialcalendarview.CalendarDay
import com.prolificinteractive.materialcalendarview.DayViewDecorator
import com.prolificinteractive.materialcalendarview.DayViewFacade
import java.util.*
class SundayDecorator: DayViewDecorator {
private var calendar = Calendar.getInstance()
override fun shouldDecorate(day: CalendarDay?): Boolean {
day?.copyTo(calendar)
val saturday = calendar.get(Calendar.DAY_OF_WEEK)
return saturday == Calendar.SUNDAY
}
override fun decorate(view: DayViewFacade?) {
view?.addSpan(object: ForegroundColorSpan(Color.RED){})
}
}
이제, MainActivity에서 addDecorator에 추가해주면 됩니다.
TodayDecorator가 하나였을 때는 addDecorator이고
calendar.addDecorator(TodayDecorator(this, today))
여러개의 Decorator를 사용해줄때는 addDecorators를 사용해주어야 합니다.
아래처럼 추가해주세요.
calendar.addDecorators(TodayDecorator(this, today), SaturdayDecorator(), SundayDecorator())
빌드하면 이렇게 완성됩니다.
전체 소스 코드
https://github.com/songmik/CalendarTest