프로그래밍 언어/Java

[Android java] MaterialDatePicker default Setting 및 날짜 제한(restirct the selectable dates)

happy_life 2021. 11. 20. 12:43

MaterialDatePicker 사용방법

 

환경설정(Setting)

 

먼저 Values 폴더의 style.xml(theme.xml)의 AppTheme를 수정해줍니다.

change the AppTheme to Material Theme.

 

사용법(How to Use)

 

java에서 onCreate 밑에 다음과 같이 코드를 입력합니다.

write down the code below the onCreate

MaterialDatePicker.Builder<Pair<Long, Long>> builder = MaterialDatePicker.Builder.dateRangePicker().setTheme(R.style.ThemeOverlay_MaterialComponents_MaterialCalendar);
builder.setTitleText("날짜를 선택해주세요");
MaterialDatePicker materialDatePicker = builder.build();
materialDatePicker.show(getChildFragmentManager(),"DATE_PICKER");

저는 setTheme 메소드를 사용해서 Dialog처럼 만들어주었습니다.

I just used setTheme Method to show MaterialPicker like Dialog 

 

 

 

활용(use extension)

1) 오늘 이후 선택 불가능하게 하기

(restict the selectable dates forward today)

CalendarConstraints.Builder constrainBuilder =  new CalendarConstraints.Builder();
constrainBuilder.setValidator(DateValidatorPointBackward.now());
builder.setCalendarConstraints(constrainBuilder.build());

 

2) 오늘로부터 일주일 이후부터 선택 불가능하게 하기

(restict the selectable dates forward after 7days from today (week))

  constrainBuilder.setValidator(DateValidatorPointBackward.before(Calendar.getInstance().getTimeInMillis()+60*60*24*1000*7));

아까의 setValidator 메소드를 이런식으로 수정해주면 됩니다. 

Calendar.getInstance().getTimeInMillis() 는 현재 시간을 밀리second로 가져오는 것입니다.

따라서 거기에 24*24*1000*을 통해 일주일 뒤의 날짜를 구할 수 있는 것입니다.

 

we can edit setValidator method like this

Calendar.getInstance().getTimeInMillis()  is the method that gets the current time in milliseconds

so just adding 24*24*1000*7 makes the date after 7days from today (after 1 week)

 

이런식으로 미래의 날짜를 선택하지 못하게 막을 수 있습니다.

오늘 Android Material 에서 제공하는 DateRangePicker에 대해 알아보았는데요

디자인도 이쁘고 기본으로 제공 받는 건데 너무 좋습니다  ! 

도움이 되셨다면 좋아요 댓글 부탁드려요~

 

we can restrict the days like this.

Today we talked about the DateRangePicker provided by Android Material Design

Design is simple and furthermore its free.

please write down comments if you don't mind. it will make me so happy 

Thanks