2017-09-13 84 views
0

有谁知道如何风格围绕日期选择器的黑框,以便它们匹配我的DatePickerDialog的背景吗? Broken DatePickerDialog风格DatePickerDialog选择器背景

仅供参考这里是我使用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

你想继续使用前棒棒糖设计还是想要材质?我支持DatePickerDialog和TimePickerDialog的官方框架(8.0,Oreo)版本,你可以在这里找到:[https://github.com/Gericop/DateTimePicker](https://github.com/Gericop)/DateTimePicker),并使采撷者在API 14+设备上进行材料设计。 –

+0

我已经在API等级21+以上的设备上使用新的材料设计版本,但由于某种原因,我现有的样式导致了此前棒棒糖设计的行为。我通过创建一个全新的风格来解决它,仅供前棒棒糖设备使用,您将在下面找到它。感谢您的建议! – Coopra

+0

这就是为什么我说如果您在整个应用程序中使用材质设计,您可能需要考虑将框架版本“升级”到后端版本,以便它将在所有API级别上使用材质设计,而不是仅在21+上使用,但选择是你的。我做了这个backport,因为旧的全息式对话框看起来非常难看,因为我的应用程序完全物化。 –

回答

0

我通过创建预棒棒糖设备DatePickers/TimePickers独立风格的解决了这个:

<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> 

然后,我使用构造函数创建DatePicker/TimePicker,并在其中为Pre-Lollipop设备传递主题资源ID:

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();