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.
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:
le tirable pour le diviseur est essentiellement une ligne rouge..
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
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
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 .
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));
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)
}
}
}
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.