I want to limit the date selection by setting minDate:
getDatePicker().setMinDate(System.currentTimeMillis() - 500);
Before selection the date picker looks like this:
Today is 30 July, however older dates are still displayed in the dialog. When I try to select an old date it disappears:
As a user I find this strange. Any ideas why this happens? Maybe a bug?
Related
I am trying to make a calendar date picker dialog pop-up with a condition. User selects month and year at first. Hence, DatePickerDialog pop-up will show with minimum 28 days (for February only) and maximum 31days (for January, March, May, …, December). User is able to pick particular date in a previously selected month of the year. Thus, those dates on which user gave attendance are set enabled, rest dates are set disabled. Now, there may be a situation that user was absent for the whole month. I want to show all the dates set disabled in the calendar for that particular month of the year. I was looking at the documentation that there were methods called setSelectableDays(Calendar[] days) and setDisabledDays(Calendar[] days), both takes #NonNull array of calendar objects to enable and disable dates repectively.
So, for this case if there was no attendance date for a particular month, I tried to make a absentDates array of calendar and passed it to the second method i.e. setDisabledDays(Calendar[] days). But, it not showing anything. I tried and checked that except one day in a specific month, I can disable rest days, not all the dates at once (an image is attached of that). I want all the dates disabled in the DatePickerDialog pop-up.
If you use the official MaterialDatePicker you can implement your own DateValidator to enable/disable days and setting it to the CalendarConstraints object before building the dialog with MaterialDatePicker.Builder().datePicker().setCalendarConstraints(contraints)
You can find a sample implementation here for DateValidatorPointForward.
Documentation: https://material.io/components/date-pickers/android#using-date-pickers
I am working on date picker dialog. I want to select a date from the disabled dates which is after setting maxDate and minDate.
I gone through the following links which is suggested to disabling or avoiding selection of disabled date.
Link 1 and
Link 2
How could I achieve the scenario ? Need help on this.
I have a CalendarView in my app, when the user selects a date by touching that date in the monthview, the correct date is selected (verified by adding debug statements in the code), but the week before is highlighted, so it looks as if the wrong date is selected.
I have found a work-around: if I set 'firstDayInWeek' to 1 the problem is solved, but by default the firstDayInweek is 2 (monday), and then this problem occurs.
Thank you very much!
Samsung S4 with API 21
I have had the same issue as you, using a Samsung S5 running API 21.
There are two workarounds that I have found, none of them is a good experience for our users :(
Force first day of the week to Sunday
calendarView.setFirstDayOfTheWeek(Calendar.SUNDAY);
Set a minimum and a maximum date for the calendar (be careful because not all of the dates work here). I was able to make it work properly setting a minimum date 2 months before the current date and maximum date 2 years after the current date. You can play with these values and find a good compromise between the limits and your user experience.
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 2);
calendarView.setMinDate(calendar.getTimeInMillis());
calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR) + 2);
calendarView.setMaxDate(calendar.getTimeInMillis());
Unfortunately, this is the only way I could fix this issue, I hope it is useful for you.
I need a custom date picker like this. But I need to select a period of time in my date picker.
for example I want: user open the date picker dialog, then select start day, then select end day (days between this 2 days are highlighted) then close the date picker dialog.
is there any open source library which i can use for this scenario?
or is there any way to edit this date picker to achieve this ?
I will appreciate any help.
Thank you
You can use android times square
this widget supports date ranges, but not have the same look and feel
I want to display a date picker for selecting date of birth,so as to user restricted to choose future date.currently date picker displays all dates including future also.i want to show the dates up to current dates only.
Thanks.
I recommend the Date Picker Dialog? Then just extend it to fit your requirements.
It's some what hard to explain how to create a Date Picker. What's better is looking at the sample code from the Android API Demos which shows you how to do a Date Picket and much more. You can figure out how to download these API Demos at: http://developer.android.com/resources/samples/get.html. Good luck!
Use the setMaxDate function, and set that to the current date
Datepicker dp = (DatePicker) v.findViewById(R.id.date_picker);
// Set it to only show past dates...
dp.setMaxDate(System.currentTimeMillis());
(reference)