본문 바로가기

안드로이드 스튜디오

[안드로이드 스튜디오 코틀린] Kotlin MaterialCalendarView 토요일, 일요일 색상 변경

728x90
반응형

 

 

https://mimisongsong.tistory.com/68

 

[안드로이드 스튜디오 코틀린] material-calendarview로 오늘 날짜 backgound 설정하기

캘린더 뷰를 만들다가 가장 많이 사용하고 있는 두 가지 open calendarview 중 material-calendarview를 사용하기로 했다. 이렇게 위처럼 다른 날짜를 선택해도 오늘 날짜 background가 남게 설정해줄 것이다. h

mimisongsong.tistory.com

윗 글의 2탄입니다.

 

 

 

윗 글을 따라하시고 이어서 따라하시면 됩니다.

 

 

 

 

 

 

 

 

 

 

 

토요일, 일요일 주말의 색상을 변경시켜주려고 합니다.

 

 

 

 

 

 

 

 

 

 

 

 

일단 윗 글과 다르게 수정할 부분은 바로 버전입니다.

 

 

 

 

 

 

 

 

 

 

 

 

(아래 주소에서 자세히 확인)

https://github.com/prolificinteractive/material-calendarview

 

GitHub - prolificinteractive/material-calendarview: A Material design back port of Android's CalendarView

A Material design back port of Android's CalendarView - GitHub - prolificinteractive/material-calendarview: A Material design back port of Android's CalendarView

github.com

 

 

 

 

 

 

 

 

 

 

 

 

 

현재, 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

 

GitHub - songmik/CalendarTest: MaterialCalendarView 응용

MaterialCalendarView 응용. Contribute to songmik/CalendarTest development by creating an account on GitHub.

github.com

 

728x90
반응형