안드로이드 자바

[Java][Android] Material CalendarView 사용하여 달력 표시하기

teamnova 2025. 6. 10. 16:43
728x90

안녕하세요

이번에는 Material CalendarView 사용해서 달력 표시하는 방법에 대해 알아보도록 하겠습니다.

안드로이드스튜디오 내부에는 기본적으로 사용 가능한 CalendarView 를 제공합니다.

하지만 커스텀하기에 매우 제한적이기 때문에, 라이브러리를 많이들 사용합니다.

 

그중에서, 가장 대표적으로 사용되는 Material CalendarView를 사용해 특정 날짜를 강조표시하는것을 해보겠습니다.

 

우선 라이브러리 사용을 위해 build.gradle.kts (Module :app) 수준에 의존성을 추가해줍니다.

dependencies {

    implementation ("com.prolificinteractive:material-calendarview:1.4.3")

}

 

 

전체 코드입니다.

 

MainActivity.java

public class MainActivity extends AppCompatActivity {

  private MaterialCalendarView calendarView;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    calendarView = findViewById(R.id.calendarView);

    // 특정 날짜 예: 2025년 6월 15일
    Calendar target = Calendar.getInstance();
    target.set(2025, Calendar.JUNE, 15);  // 6월은 Calendar.JUNE

    calendarView.addDecorator(new DayViewDecorator() {
      @Override
      public boolean shouldDecorate(CalendarDay day) {
        return day.equals(CalendarDay.from(target));
      }

      @Override
      public void decorate(DayViewFacade view) {
        view.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#FFA726"))); // 주황 배경
      }
    });
  }
}

 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:padding="16dp">

  <com.prolificinteractive.materialcalendarview.MaterialCalendarView
    android:id="@+id/calendarView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:mcv_showOtherDates="all"
    app:mcv_firstDayOfWeek="monday"
    app:mcv_selectionColor="#FF4081"
    />

</LinearLayout>

 

현재 2025년 6월 15일에 강조표시를 하도록 설정해놓았습니다.

이를 활용해서 다양하게 적용해보시기 바랍니다.

 

시연영상입니다.