Comment changer les couleurs "intercalaires" de la boîte de dialogue Android DatePicker

j'essaie de créer un dialogue personnalisé, en gros j'utilise DatePickerDialog.THEME_HOLO_DARK mais je veux changer la couleur" divider " et la couleur du texte.

enter image description here

je veux changer les lignes bleues et la couleur du texte en rouge.

Merci d'avance!

EDIT:

sous ce code:

<style name="testo" parent="@android:style/Widget.DeviceDefault.DatePicker">
    <item name="android:divider">@drawable/dialog_divider</item>
</style>

C'est ce que j'obtiens: enter image description here

le tirable pour le diviseur est essentiellement une ligne rouge..

10
demandé sur Pehlaj 2012-10-03 18:58:55

6 réponses

vous devrez créer votre propre thème qui étend THEME_HOLO_DARK. changer thème de base couleur de l'application android

Edit: Essayer quelque chose comme cela

<style name="testo" parent="@android:style/Widget.DeviceDefault.DatePicker">
    <item name="android:divider">@drawable/MyDivider</item>
</style>

et passer la référence à votre thème au constructeur

0
répondu AedonEtLIRA 2017-05-23 12:34:39

ajoutez cet article à votre thème principal

<item name="numberPickerStyle">@style/MyApp.NumberPicker</item>

définir la couleur du diviseur personnalisé dans ce style

<style name="MyApp.NumberPicker" parent="Widget.Holo.NumberPicker">
   <item name="selectionDivider">@color/white</item>
</style>

EDIT: testé uniquement sur HoloEverywhere

0
répondu Oleg Koshkin 2015-03-19 07:55:48

je sais que c'est une réponse tardive, mais je tiens à partager mes découvertes avec ceux qui ont connu ou connaîtront ce problème à l'avenir.

j'ai cherché beaucoup d'endroits, et la seule solution que j'ai trouvée était les cueilleurs de SimonVT.

après avoir implémenté la bibliothèque, il était très facile de changer les couleurs. Dans numberpicker - la bibliothèque utilise des images qui peuvent être simplement remplacés par les dessins désirés.

cet exemple comporte trois pickers: NumberPicker, DatePicker et TimerPicker.

https://github.com/rodrigobusata/android-pickers

j'espère que vous le trouverez utile.



mise à jour

le lien ci-dessus n'existe plus, maintenant vous devez utiliser le design du matériau https://github.com/wdullaer/MaterialDateTimePicker .

0
répondu Busata 2016-01-08 12:26:48

veuillez utiliser le code ci-dessous

ici, dialog est un objet de DatePickerDialog.

    int dividerId = dialog.getContext().getResources().getIdentifier
            ("android:id/titleDivider", null, null);
    View divider = dialog.findViewById(dividerId);
    divider.setBackgroundColor(getResources().getColor(R.color.red));

    int textViewId = dialog.getContext().getResources().getIdentifier
            ("android:id/alertTitle", null, null);
    TextView tv = (TextView) dialog.findViewById(textViewId);
    tv.setTextColor(getResources().getColor(R.color.red));
0
répondu miteshpithadiya 2016-02-08 06:13:52
     fun applyStyLing(timePickerDialog: DatePickerDialog,context: Context) {

        try {
            var dividerId = timePickerDialog.getContext().getResources().getIdentifier("titleDivider", "id", "android")
            val divider = timePickerDialog.findViewById<View>(dividerId)
            divider.setBackgroundColor(ContextCompat.getColor(context, R.color.colorDatePicker))

            var dividerId1 = timePickerDialog.getContext().getResources().getIdentifier("alertTitle", "id", "android")
            val divider1 = timePickerDialog.findViewById<TextView>(dividerId1)
            divider1.setTextColor(ContextCompat.getColor(context, R.color.colorDatePicker))

            val system = Resources.getSystem()
            val hourNumberPickerId = system.getIdentifier("day", "id", "android")
            val minuteNumberPickerId = system.getIdentifier("month", "id", "android")
            val ampmNumberPickerId = system.getIdentifier("year", "id", "android")

            val hourNumberPicker = timePickerDialog.findViewById<View>(hourNumberPickerId) as NumberPicker
            val minuteNumberPicker = timePickerDialog.findViewById<View>(minuteNumberPickerId) as NumberPicker
            val ampmNumberPicker = timePickerDialog.findViewById<View>(ampmNumberPickerId) as NumberPicker

            setNumberPickerDividerColour(hourNumberPicker,context)
            setNumberPickerDividerColour(minuteNumberPicker,context)
            setNumberPickerDividerColour(ampmNumberPicker,context)

        }catch (e:Exception)
        {
            e.printStackTrace()
        }

    }


private fun setNumberPickerDividerColour(number_picker: NumberPicker,context: Context) {
        val count = number_picker.childCount

        for (i in 0 until count) {

            try {
                val dividerField = number_picker.javaClass.getDeclaredField("mSelectionDivider")
                dividerField.isAccessible = true
                val colorDrawable = ColorDrawable(context.getResources().getColor(R.color.colorDatePicker))
                dividerField.set(number_picker, colorDrawable)

                number_picker.invalidate()
            } catch (e: NoSuchFieldException) {
                Log.w("setNumberPickerTxtClr", e)
            } catch (e: IllegalAccessException) {
                Log.w("setNumberPickerTxtClr", e)
            } catch (e: IllegalArgumentException) {
                Log.w("setNumberPickerTxtClr", e)
            }

        }
    }
0
répondu Rambabu Padimi 2018-08-10 07:00:21

vous pouvez changer la couleur du texte en faisant quelque chose comme

<style name="testo" parent="@android:style/Widget.DeviceDefault.DatePicker">

<item name="android:textColor">#FF0000</item>

</style>

avez-vous déjà trouvé comment changer la couleur du diviseur? J'essaie de faire la même chose et je ne trouve rien en ce moment.

-2
répondu MoLo 2012-11-02 23:38:53