我正在尝试创建一个自定义对话框,基本上我正在使用DatePickerDialog.THEME_HOLO_DARK
,但我想更改“分隔符”颜色和文本颜色。
我想将蓝线和文字颜色更改为红色。
提前致谢!
编辑:
使用此代码:
<style name="testo" parent="@android:style/Widget.DeviceDefault.DatePicker">
<item name="android:divider">@drawable/dialog_divider</item>
</style>
这就是我得到的:
分隔线的drawable基本上是一条红线..
答案 0 :(得分:1)
您必须创建自己的主题,以扩展THEME_HOLO_DARK。 Change basic theme color of android application
编辑:尝试这样的事情
<style name="testo" parent="@android:style/Widget.DeviceDefault.DatePicker">
<item name="android:divider">@drawable/MyDivider</item>
</style>
将您的主题引用传递给constructor
答案 1 :(得分:1)
将此项添加到主题
<item name="numberPickerStyle">@style/MyApp.NumberPicker</item>
以此样式设置自定义分隔线颜色
<style name="MyApp.NumberPicker" parent="Widget.Holo.NumberPicker">
<item name="selectionDivider">@color/white</item>
</style>
编辑:仅在HoloEverywhere上测试
答案 2 :(得分:0)
我知道这是一个迟到的回复,但我想与未来经历过或将会遇到此问题的人分享我的发现。
我搜索了很多地方,我发现的唯一解决方案是SimonVT的采摘者。
实施库后,很容易更改颜色。在numberpicker中,库使用的图像可以简单地用所需的设计替换。
此示例有三个选择器:NumberPicker,DatePicker和TimerPicker。
https://github.com/rodrigobusata/android-pickers
我希望你觉得它很有用。
<强>已更新强>
以上链接不再存在,现在您必须使用Material Design https://github.com/wdullaer/MaterialDateTimePicker。
答案 3 :(得分:0)
请使用以下代码
此处,dialog是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));
答案 4 :(得分:0)
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)
}
}
}
答案 5 :(得分:-2)
您可以通过执行类似
的操作来更改文字颜色 <style name="testo" parent="@android:style/Widget.DeviceDefault.DatePicker">
<item name="android:textColor">#FF0000</item>
</style>
你有没有想过如何改变分频器的颜色?我正在尝试做同样的事情,目前找不到任何东西。