Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

DatePickerDialog with theme Holo Light?

How is it possible to get a DatePickerDialog with Holo Light theme?

When creating a DatePickerDialog as follows:

 DatePickerDialog dpd = new DatePickerDialog(new ContextThemeWrapper(this,
                    android.R.style.Theme_Holo_Light_Dialog_NoActionBar), 
    new DateListener(v), mTime.year, mTime.month, mTime.monthDay);

or with theme android.R.style.Theme_Holo_Light or android.R.style.Theme_Holo_Light_Dialog, I get a date picker with a standard title and standard buttons. I tried to use a custom theme with a holo light parent too, but it didn't work either. It seems to work with theme android.R.style.Theme_Holo, but the result is a dark background (as expected), but I would like to have a light one.

The application's android.jar is of version 14, the application is running on a divice with android version 3.2.

I have seen an example here: http://as400samplecode.blogspot.com/2011/10/android-datepickerdialog.html, which shows a DatePickerDialog with the holo light theme, the way I would like to have it. I don't know why it doesn't work with my setup.

Thank you for help.

like image 446
Julia Avatar asked Feb 14 '12 14:02

Julia


2 Answers

For Material style this worked for me:

int datePickerThemeResId = 0;
if (android.os.Build.VERSION.SDK_INT >= 21) {
    datePickerThemeResId = android.R.style.Theme_Material_Light_Dialog;
}
new DatePickerDialog(
    context,
    datePickerThemeResId,
    (view, year, month, dayOfMonth) -> {},
    year,
    month,
    day
).show();
like image 176
jonruna Avatar answered Sep 21 '22 03:09

jonruna


The DatePickerDialog has a constructor which accepts a theme

DatePickerDialog(Context context, int theme, DatePickerDialog.OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth)

just update your code to include the style you want without the need for a ContextThemeWrapper

DatePickerDialog dpd = new DatePickerDialog(this,
                android.R.style.Theme_Holo_Light_Dialog_NoActionBar, 
new DateListener(v), mTime.year, mTime.month, mTime.monthDay);

It's working for me that way.

like image 22
SuperShalabi Avatar answered Sep 23 '22 03:09

SuperShalabi