Search code examples
androidmaterial-designandroid-timepicker

Android TimePickerDialog material design color


I am using a time picker dialog in my app. I am also using appcompat to give my app material design theme. The dialog however stays with the default teal accent color (my accent is a light blue).

so in my code I tried setting the dialog theme to my own and it works accept it makes it fullscreen

mTimePicker = new TimePickerDialog(ctx, R.style.AppTheme new TimePickerDialog.OnTimeSetListener() {->}, hour, minute, DateFormat.is24HourFormat(context));

does anyone know how to set the TimePickerDialog to show correctly with my colors instead of the default ones?


Solution

  • This can be easily achieved from xml (5.0+ only)

    v21/themes.xml

    <resources xmlns:android="http://schemas.android.com/apk/res/android">
    
        <style name="Theme"
               parent="MyTheme.Base">
    
            <item name="android:dialogTheme">@style/Theme.Dialog</item> <!-- TimePicker dialog -->
            <item name="android:alertDialogTheme">@style/Theme.Dialog</item> <!-- Alert dialog -->
    
        </style>
    
        <style name="Theme.Dialog"
               parent="android:Theme.Material.Light.Dialog">
    
            <item name="android:colorAccent">@color/...</item>
            <item name="android:colorPrimary">@color/...</item>
            <item name="android:colorPrimaryDark">@color/...</item>
    
        </style>
    
    </resources>
    

    Edit
    Please note that as of Android Support Library 22.1.0 there is a new AppCompatDialog available! http://android-developers.blogspot.de/2015/04/android-support-library-221.html