XML Attributes
해당 라이브러리의 XML 속성들은 모두 cv_로 시작한다.
CalendarView 및 WeekCalendarView 클래스에 사용할 수 있는 특성은 다음과 같다.
- cv_dayViewResource : 날짜 셀에 대한 레이아웃 리소스 (필수)
- cv_scrollPaged : 캘린더에 대한 Scrolling Behavior, true인 경우 스크롤 또는 스와이프 동작 후 가장 가까운 달 또는 주로 스냅된다. false일 경우 그냥 스크롤된다. (AutoScrollo과 유사)
- daySize : 캘린더의 각각의 셀에 대한 크기를 나타내는 속성
- square : 캘린더의 너비와 높이를 7로 나눈 값이 width와 height가 됨
- rectangle: 각 날짜의 너비는 달력의 너비와 일치하는 7로 나누고, 달력의 높이와 일치하는 높이는 색인의 주 수로 나눈 값과 일치하는 4, 5 또는 6일 수 있으며, 주 달력의 경우 1일 수 있습니다. 부모의 너비와 높이를 각 월 또는 주에 채우려면 이 항목을 사용합니다.
- seventhWidth: 각 날짜는 달력의 너비와 일치하는 너비를 7로 나눈다. 특정 값을 설정하거나 레이아웃 매개 변수를 사용하여 일의 높이를 결정할 수 있습니다.
- freeForm: 특정 값을 설정하거나 LayoutParams.WRAP_CONTENT로 지정 가능
CalendarView에서만 사용할 수 있는 속성은 아래와 같다.
- monthHeaderResource: 모든 달의 헤더에 사용되는 xml 리소스
- monthFooterResource: 모든 달의 푸터에 사용되는 xml 리소스
- orientation: 달력 스크롤의 방향을 나타내는 속성 (기본 horizontal)
- monthViewClass: 인스턴스화되어 매월 컨테이너로 사용되는 보기 그룹입니다. 이 클래스에는 컨텍스트만 사용하는 생성자가 있어야 합니다. 이 클래스의 이름과 생성자를 사용 가능한 경우 코드 난독화에서 제외해야 합니다.
- outDateStyle: 이것은 달력의 각 달에 대해 outDate를 생성하는 방법을 결정합니다. 다음 두 값 중 하나가 될 수 있습니다:
- endOfRow: 달력은 월말 행에 도달할 때까지 날짜를 생성합니다. 즉, 한 달에 행이 5개인 경우 5개 행이 표시되고 한 달에 행이 6개인 경우 6개 행이 표시됩니다.
- endOfGrid: 달력은 매월 6 x 7 그리드의 끝에 도달할 때까지 날짜를 생성합니다. 이것은 모든 달에 6개의 행이 있다는 것을 의미합니다.
아래 스크린샷을 보면 outDates와 inDates가 무엇인지 알 수 있다.
초록색 사각형 부분이 inDates, 빨간색 사각형 부분이 outDates, 그 외의 항목들은 monthDates이다.
이를 구현하려면, 아래의 코드를 참고하면 된다.
calendarView.dayBinder = object : MonthDayBinder<DayViewContainer> {
override fun create(view: View) = DayViewContainer(view)
override fun bind(container: DayViewContainer, data: CalendarDay) {
container.textView.text = data.date.dayOfMonth.toString()
if (data.position == DayPosition.MonthDate) {
container.textView.setTextColor(Color.WHITE)
} else {
container.textView.setTextColor(Color.GRAY)
}
}
}
CalendarView
속성 (Properties)
- monthScrollListener: 캘린더가 다른 달로 스크롤 되었을 때 호출된다. scrollPaged가 true인 경우 유용한 속성이다.
- dayBinder : 날짜 셀을 관리하기 위한 MonthDayBinder의 인스턴스
- MonthDayBinder 인터페이스의 create 메소드와 bind 메소드를 통해서 DayViewContainer를 연결하고, 날짜 셀의 데이터를지정할 수 있다.
- monthHeaderBinder: 헤더 뷰를 관리하기 위한 MonthHeaderFooterBinder 인스턴스. 헤더 뷰는 달력의 매월 위에 표시된다.
- monthFooterBinder: 푸터 뷰를 관리하기 위한 MonthHeaderFooterBinder 인스턴스. 푸터 뷰는 달력의 매월 아래에 표시된다.
- monthMargins : 달과 달 사이의 여백(픽셀)을 지정한다.
메소드 (Method)
- scrollToDate(date: LocalDate): 달력의 특정 날짜로 스크롤한다. smoothScrollToDate()를 사용하여 부드러운 애니메이션이 적용되어 있다.
- scrollToMonth(month: YearMonth): 달력에서 특정 월(달)로 스크롤한다. smoothScrollToMonth()를 사용하여 부드러운 애니메이션이 적용되어 있다.
- notifyDateChanged(date: LocalDate) : 지정된 날짜에 대한 뷰를 갱신한다.
- notifyMonthChanged(month: YearMonth): 지정된 달의 헤더, 바디, 푸터를 갱신한다.
- notifyCalendarChanged() : 전체 캘린더를 갱신한다.
- findFirstVisibleMonth() and findLastVisibleMonth(): 캘린더에서 처음과 마지막으로 보이는 달을 찾는다.
- findFirstVisibleDay() and findLastVisibleDay(): 캘린더에서 처음과 마지막으로 보이는 날짜를 찾는다.
- updateMonthData(): 초기 설정 후 CalendarView의 시작 월 또는 종료 월 또는 첫 번째 요일을 업데이트한다. 현재 표시되는 월이 보존된다. 달력은 매우 큰 날짜 범위를 처리할 수 있으므로 범위를 자주 업데이트하는 대신 큰 날짜 범위로 달력을 설정하는 것도 좋다.
WeekCalendarView
속성 (Properties)
- weekScrollListener: 캘린더가 다른 주로 스크롤 되었을 때 호출된다. scrollPaged가 true인 경우 유용한 속성이다.
- dayBinder: 날짜 셀을 관리하기 위한 WeekDayBinder의 인스턴스
- weekHeaderBinder: 헤더 뷰를 관리하기 위한 WeekHeaderFooterBinder 인스턴스. 헤더 뷰는 달력의 매주 위에 표시된다.
- weekFooterBinder: 푸터 뷰를 관리하기 위한 WeekHeaderFooterBinder 인스턴스. 푸터 뷰는 달력의 매주 아래에 표시된다.
- weekMargins: 주와 주 사이의 여백(픽셀)을 지정한다.
메소드 (Method)
- scrollToDate(date: LocalDate): Scroll to a specific date on the calendar. Use smoothScrollToDate() to get a smooth scrolling animation.
- scrollToWeek(date: LocalDate): Scroll to the week containing this date on the calendar. Use smoothScrollToWeek() to get a smooth scrolling animation.
- notifyDateChanged(date: LocalDate): Reload the view for the specified date.
- notifyWeekChanged(date: LocalDate): Reload the header, body and footer views for the week containing this date.
- notifyCalendarChanged(): Reload the entire calendar.
- findFirstVisibleWeek() and findLastVisibleWeek(): Find the first and last visible weeks on the calendar respectively.
- findFirstVisibleDay() and findLastVisibleDay(): Find the first and last visible days on the calendar respectively.
- updateWeekData(): Update the WeeCalendarView's start date or end date or the first day of week after the initial setup. The currently visible week is preserved. The calendar can handle really large date ranges so you may want to setup the calendar with a large date range instead of updating the range frequently.
'안드로이드' 카테고리의 다른 글
[ 안드로이드 ] 구글 캘린더 구현하기 (3) - 캘린더 Week <-> Month 전환 구현 (0) | 2023.02.28 |
---|---|
[ 안드로이드 ] 구글 캘린더 구현하기 (1) - CalendarView 라이브러리 추천 / 예제 (0) | 2023.02.27 |
[ 안드로이드 ] 멘토링 과제 1. (1) | 2023.02.13 |