2017-09-13 2 views
0

Est-ce que quelqu'un sait comment styliser les boîtes noires entourant les sélecteurs de date afin qu'elles correspondent à l'arrière-plan de mon DatePickerDialog? Broken DatePickerDialogStyle DatePickerDialog fond du sélecteur

Pour référence est ici le style que je utilise pour AlertDialogs:

<style name="AlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert"> 
    <item name="android:windowBackground">@android:color/white</item> 
    <item name="android:colorBackground">@android:color/white</item> 
    <item name="colorAccent">@color/group_blue_800</item> 
    <item name="android:textColorPrimary">@color/secondary_text</item> 
    <item name="android:textColor">@color/primary_text</item> 
    <item name="android:lineSpacingMultiplier">1.2</item> 
    <item name="colorControlNormal">@android:color/white</item> 
    <item name="colorPrimary">@android:color/white</item> 
    <item name="colorPrimaryDark">@android:color/white</item> 
</style> 
+0

Voulez-vous continuer à utiliser le design pré-sucette ou voulez-vous le matériel? J'ai rétroporté la version officielle, framework (8.0, Oreo) des 'DatePickerDialog' et' TimePickerDialog' que vous pouvez trouver ici: [https://github.com/Gericop/DateTimePicker](https://github.com/Gericop/DateTimePicker) et permet aux sélecteurs d'avoir la conception matérielle sur les périphériques API 14+. –

+0

J'utilise déjà la nouvelle version de conception matérielle pour les appareils au niveau API 21+, mais pour une raison quelconque, mes styles existants ont abouti à ce comportement pour la conception pré-sucette. Je l'ai résolu en créant un tout nouveau style juste pour être utilisé par les pré-sucettes que vous trouverez ci-dessous. Merci pour le conseil! – Coopra

+0

C'est pourquoi je dis que si vous utilisez la conception matérielle dans votre application, vous pouvez envisager de "mettre à niveau" la version du framework vers la version rétroportée afin qu'elle utilise la conception matérielle sur tous les niveaux API au lieu de 21+. mais le choix vous appartient. J'ai fait ce backport parce que les vieilles boîtes de dialogue de style holo avaient l'air assez moche avec l'application autrement entièrement matérialisée. –

Répondre

0

Je résolus en créant un style autonome pour datepickers/TimePickers pour les appareils pré-Lollipop:

<style name="PreLollipopDatePickerStyle" parent="Theme.AppCompat.Light.Dialog"> 
     <item name="android:lineSpacingMultiplier">1.2</item> 
     <item name="android:windowContentOverlay">@null</item> 
     <item name="android:windowIsFloating">true</item> 
     <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> 
     <item name="android:windowBackground">@android:color/white</item> 
     <item name="android:colorBackground">@android:color/white</item> 
     <item name="android:textColorPrimary">@color/secondary_text</item> 
     <item name="android:textColorSecondary">@color/secondary_text</item> 
     <item name="android:textColor">@color/primary_color</item> 
     <item name="colorAccent">@color/group_blue_800</item> 
    </style> 

Ensuite, je crée un DatePicker/TimePicker en utilisant le constructeur où vous passez un ID de ressource de thème pour les dispositifs pré-Lollipop:

DatePickerDialog datePickerDialog; 
if (AndroidUtils.isLollipop()) { 
    datePickerDialog = new DatePickerDialog(
     getActivity(), 
     new EndDateTimeSelectedListener(), 
     endDateTimeExclusive.get(Calendar.YEAR), 
     endDateTimeExclusive.get(Calendar.MONTH), 
     endDateTimeExclusive.get(Calendar.DAY_OF_MONTH)); 
} else { 
    datePickerDialog = new DatePickerDialog(
     getActivity(), 
     R.style.PreLollipopDatePickerStyle, 
     new EndDateTimeSelectedListener(), 
     endDateTimeExclusive.get(Calendar.YEAR), 
     endDateTimeExclusive.get(Calendar.MONTH), 
     endDateTimeExclusive.get(Calendar.DAY_OF_MONTH)); 
} 

datePickerDialog.show();