PHP

[Material-Calendar 응용] 특정한 날짜들에 스타일 적용시켜주기 (DayViewDecorator응용)

미스털이 사용자 2024. 10. 23. 14:10
반응형

 

다음과 같이 토요일과 일요일의 날짜 색깔을 바꾸려면 DayViewDecorator를 implements한 클래스가 필요하다.

 

 

다음과 같이 클래스 명명 해준뒤

 

 

DayViewDecorator 오버라이드 메소드를 적어준다.

 

 

***

 

그 다음으로 생성자 지정을 해줄텐데,

1) 토요일, 파란색

2) 일요일, 빨간색

이렇게 두가지 속성(무슨요일, 무슨색)이 있어야 구현될 것이기 때문에 이 속성을 받게될 생성자를 만든다.

 

그 다음 아까전에 적어준 오버라이드 메소드 중, shouldDecorate 메소드를 구현한다.

여기선 조건에 관한 구현을 해줄 것이다.

 

여기서 관건은 Calendar.DAY_OF_WEEK 값을 구하기 위해 CalendarDay형식을 Calendar형식으로 변환시켜주는 것이다. tmp_cal을 Calendar형식에 맞게 초기화 시킨 후 이를 set메소드를 통해 변환시켜준다.

 

CalendarDay, Calendar, Date형식간 변환을 자유자재로 할 수 있게 참고해둔다.

 

 

 

그 다음 위 조건이 true일 경우 어떻게 장식해줄지 decorate메소드 통해 구현한다.

addSpan과 ForegroundColorSpan을 통해 글자 색깔을 바꿔주게끔 구현한다.

 

***

그 다음엔 colors.xml에 설정한 색상을 불러온 뒤, 각 요일과 색상 속성을 HighlightDayClass생성자를 통해 만든다.

 

그리고 이렇게 만든 DayViewDecorator를 통해 만들어진 여러 객체들을 addDecorator에 집어넣어 만든다.

반응형