I am trying to change the header on material design date picker as you select a date to a different format than default. Current default is Month , year : ex: june 22, 2021, but I want it such that its Mon, June 22. It's shown on material design document as the first design, but there's no indication of how to go about changing this format?
Any ideas?
material designs : https://material.io/components/date-pickers
what I want to achieve is this :
Unfortunately, you can NOT change Date Format and Local of MaterialDatePicker.
Since MaterialDatePicker is very restricting, so as many other Material Design Components, I recommend you to use an alternate Date Picker Library such as MaterialDateTimePicker.
It basically fulfills all your needs:
Change date format: setLocale(Locale locale) ✅
Choose from multiple date UIs ✅
Very flexiable and easily customizlbe to fit your needs ✅
PS: There is one more popular alternative: android-betterpickers
Let me know if you have any other questions.
After looking into the source, and trying some things, I did find a solution. Unfortunately, it's not that simple to implement and I guess switching to MaterialDateTimePicker is still the best solution here.
The conversion from date to text for the header is done by the DateSelector via getSelectionDisplayString(Context context). See getHeaderText() inside of MaterialDatePicker here.
Sadly, MaterialDatePicker is final, so you can not simply create your own and override this method. But, with the given Builder, you can use MaterialDatePicker.Builder.customDatePicker(DateSelector selector) to place your own DateSelector (source).
Material uses their SingleDateSelector (source) for a simple date selection. But again, it's not possible to build upon this selector and write a custom getSelectionDisplayString method, because the class is restricted. Knowing this, it's needed to write your own DateSelector.
Building your own DateSelector is a bigger task on its own. It may be possible to copy from SingleDateSelector, but it's using some private classes and methods you need to copy, too.
To cut a long story short, I guess this is too much for "simply" changing the date format.
Related
I'm trying to create a custom calendar in Android. I want to create somethning like this
custom calendar.
As you can see the design is slightly different than normal date picker for android. I tried to change it in xml, but like I found out, it isnt possible. So my question is - how to do that? Should I create custom class which extend from DatePicker? I was trying to find the solution by myself, but I found only answers to change color etc, but I want to also change design and font.
I will be very grateful for your help
I would like to add dots below specific dates, anyone knows if it's possible with the Material Components?
It's a similar problem to the one here - it does not seem to be currently supported by the MaterialDatePicker.
Feature request submitted here, feel free to back it up.
Update
The feature has been implemented and it's now possible to add a dot below days in the Material DatePicker. The material catalog has a very clear example of such an implementation.
You need to extend the DayViewDecorator class and override one of the getCompoundDrawable methods to create the drawable (little circle under each desired date) - in this case it would be getCompoundDrawableBottom.
I implemented date picker in my project from here: https://developer.android.com/guide/topics/ui/controls/pickers
The problem is, this date picker is in the format of regular calendar, and it takes a long time to choose faraway dates. In my app this kind of action is going to be performed all the time.
So, my question is, is there a possibility to change this calendar-like form to something faster? For example like in the picture below.
Picture of date picker i would like to make
check that library: https://github.com/florent37/SingleDateAndTimePicker
I've used it some time ago and it did almost exactly what you're looking for ;)
If it doesn't fit your needs, you can look for more 'iOS style date pickers' for Android, for example in this SO post:
ios like date/time picker for android platform
Edit:
It seems that this picker is Holo Light style and is achievable with this piece of code:
DatePickerDialog datepickerdialog = new DatePickerDialog(getActivity(),
AlertDialog.THEME_HOLO_LIGHT,this,year,month,day);
But you need to check that on your own because they might be deprecated or not working with other themes.
Did you check this for Material Design?
Here is its documentation and code.
The DatePicker widget in Android has an attribute called android:datePickerMode that has a calendar option and a spinner option.
You can use the spinner option to get the appearance of the DatePicker you are after.
I wanna make a custom fragment to choose date ana time like the one on justPark app. Can someone help me with a turo or link to do it.
Thank you
You can use Android's Calendar API to create your very own implementation with any user interface you like. But making a fully proportionate calendar type view date picker is a lengthy task and would take some time.Since the android's default date picker is flexible enough to adapt your app's theme you may not find custom calendar implementations commonly but sure you can checkout 3rd party libraries.
Here's one for example caldroid
its a custom calendar implementation in a fragment.
Hope this helps.
I am using the digital clock but i need a simple customisation to it. My code is like this.
DigitalClock digitalClock=new DigitalClock(this);
//Set of attributes
digitalClock.setDrawingCacheEnabled(true);
setContentView(digitalClock);
It displays the time in hr:min:sec format. I want it to look like hr:min format and also I want it in 24hour format.
I am suspecting that I should use the calendar apis and use string format api. But I am not sure with the best approach.
Any suggestion is precious.
Thanks
Time format is hard-coded, so you can't change it. The only way to change it is to re-implement DigitalClock widget. Yo can get source code from here.