How to Change the Datepicker style for Android
Solution 1
Add this to style.xml
<style name="date_picker_theme" parent="@android:style/Widget.DatePicker">
And then you should apply style for your date picker like this:
<DatePicker
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/datePicker"
style="@style/date_picker_theme" />
Solution 2
Create style with
<style name="DatePicker" parent="@android:style/Theme.Holo.Light">
<item name="android:datePickerStyle">@android:style/Widget.DatePicker</item>
</style>
Then in custom fragment dialog xml
<DatePicker
android:theme="@style/DatePicker"
android:id="@+id/fragment_date_picker_control"
android:datePickerMode="spinner"
android:spinnersShown="true"
android:calendarViewShown="false"
android:layout_marginLeft="@dimen/margin_normal"
android:layout_marginRight="@dimen/margin_normal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" />
Link : http://yogeshkalwar.blogspot.in/2017/08/custom-spinner-datepicker-supporting-n70.html
Solution 3
It might be too late but you can set it programmatically like these.
Apply it inside your onClick
listener.
DatePickerDialog datePicker = new DatePickerDialog(
this,
android.R.style.Theme_Holo_Light_Dialog_MinWidth,
datePickerListener,
cal.get(Calendar.YEAR),
cal.get(Calendar.MONTH),
cal.get(Calendar.DAY_OF_MONTH));
datePicker.setCancelable(false);
datePicker.setTitle("Select the date");
datePicker.show();
The android.R.style.Theme_Holo_Light_Dialog_MinWidth
create style that you want.
Hope it helps someone.
Solution 4
To set the DatePicker style globally, add the following to style.xml
, or adjust existing content:
<resources>
<style name="AppTheme" parent="@style/Theme.AppCompat.Light">
<item name="android:datePickerStyle">@style/MyDatePicker</item>
</style>
...
</resources>
And define your customized DatePicker style, either in style.xml
or a separate file, e.g.:
<resources>
<style name="MyDatePicker" parent="@android:style/Widget.DatePicker">
<item name="android:calendarViewShown">false</item>
<item name="android:datePickerMode">spinner</item>
</style>
</resources>
JulianMartinez23
Updated on July 15, 2022Comments
-
JulianMartinez23 almost 2 years
I'm currently making a registration form, and one of the fields is for the users Date of Birth. I want to use datepicker, however I don't want the calendar layout as shown below:
I want the layout to look something like this so that way its easier to choose the year and month without having to scroll through everything:
However I do not know how to go about this, or what to put inside the styles.xml file. Any help would be greatly appreciated.
-
iflorit over 7 yearsNot working set programmatically? I've tried this but nothing changes :(
-
Victor V. over 7 yearsI think, you can use DatePickerFragment and ContextThemeWrapper
-
Victor V. over 7 yearsCreate new instance of theme wrapper ContextThemeWrapper(Context base, int themeResId) and when you create DatePickerDialog you should transfer this context constructor - DatePickerDialog(Context context).
-
iflorit over 7 yearsFinally, my only working solution has been to create an AlertDialog and include a DatePicker as a view . Thanks!