PHP

[Material-calendar] 날짜(각 칸, 항목) 스타일을 한 번에 잡아주는 selector xml

미스털이 사용자 2024. 10. 21. 19:38
반응형

material엔 decorator라는 커스터마이징할 수 있는 장치가 있다. 

 

이를 설정하려면

addDecorator, addDecorators

 

기존 설정을 없애려면

removeDecoators, invalidateDecorators

 

위의 메소드를 잘 사용하면 된다.

 

이번엔 addDecorator에 공통으로 적용할 사항을 넣어주려고 한다.

 

 

다음과 같이 메소드 선언해주고 괄호 안에 SelectDecorator를 넣어준다.

이 selectDecorator는 내가 임의로 만든 클래스다.

 

여기서 눈 여겨 봐야할 게 3가지다.

 

1. shouldDecorator에서 true를 리턴해야 내가 설정한 drawable이 보여진다.

2. decorator에서 view.setSelectionDrawable로 생성자에서 지정한 drawable을 적용해야 한다.

3. 마지막으로 calendar_selector라는 drawable을 만들어야 생성자에서 제대로 지정된다.

 

그러면 이 calendar_selector라는 xml은 뭔지 보자.

 

 

state_~~~에 의해서 각 이벤트별 drawable을 지정해준다.

pressed는 눌렀을 때, checked는 지정했을 때 이벤트를 뜻한다.

마지막으로 state가 없는 상태면 딱 기본 상태다.

 

위의 item태그에 지정된 drawable은 shape xml을 통해 설정된다.

 

 

그럼 각 날짜별로 다음과 같이 눌렀을 때, 눌린 후, 기본 상태값별로 스타일이 지정돼 나타날 것 이다.

반응형