2017-09-13 42 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();