2015-01-10 1 views
7

Я использую диалог выбора времени в своем приложении. Я также использую appcompat, чтобы дать тему дизайна приложения. Диалог, однако, остается с цветным акцентом по умолчанию (мой акцент - голубой).Android TimePickerDialog цвет материала

так в моем коде, я попытался установить диалог тему с моим собственным, и он работает принимать это делает весь экран

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

Кто-нибудь знает, как установить TimePickerDialog правильно отображать мои цвета вместо стандартных?

ответ

15

Это может быть легко достигнуто с XML (5.0+ только)

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> 

Редактировать
Пожалуйста, обратите внимание, что в Android поддержки библиотеки 22.1.0 есть новый AppCompatDialog доступен ! http://android-developers.blogspot.de/2015/04/android-support-library-221.html

+1

... или используйте Theme.AppCompat.Light.Dialog, если родительская тема основного приложения - Theme.AppCompat. – radley

+0

Важно установить 'dialogTheme' и' alertDialogTheme', Samsung, похоже, игнорирует 'alertDialogTheme'. – ashishduh

+1

Любая идея воссоздать это на устройствах pre-v21? – SethCoast