3 回答

TA貢獻1828條經驗 獲得超4個贊
DatePickerDialog使用活動主題指定的對話框主題。這是一個完全指定的主題,這意味著您需要重新指定在活動主題中設置的所有屬性(例如日期選擇器樣式)。
<style name="MyAppTheme" parent="android:Theme.Material">
<item name="android:dialogTheme">@style/MyDialogTheme</item>
<item name="android:datePickerStyle">@style/MyDatePicker</item>
</style>
<style name="MyDialogTheme" parent="android:Theme.Material.Dialog">
<item name="android:datePickerStyle">@style/MyDatePicker</item>
</style>
<style name="MyDatePicker" parent="android:Widget.Material.DatePicker">
<item name="android:datePickerMode">spinner</item>
</style>
注意:由于版本222208的緣故,此功能在Android N / API 24中不起作用。在下一版本的平臺中已修復此問題。沒有適用于API 24設備的解決方法。

TA貢獻1784條經驗 獲得超2個贊
我認為解決此問題的最佳方法是在XML文件中定義一種新樣式,然后在代碼中以編程方式使用它。
盡管@alanv 答案是完美的并且可以正常工作,但是它的問題是它將應用于所有日期選擇器。假設您有一個需要顯示“日歷”視圖的DatePicker,而另一個有需要顯示微調器視圖的DatePicker,則此操作將無效。
因此,在styles.xml中定義一個新樣式。在名為values-v21的文件夾中創(chuàng)建此文件(請參見此處的命名結構),因為這些屬性僅在棒棒糖發(fā)布后才引入。在棒棒糖之前,只有旋轉器模式。
<style name="CustomDatePickerDialogTheme" parent="android:Theme.Material.Light.Dialog">
<item name="android:datePickerStyle">@style/MyDatePickerStyle</item>
</style>
<style name="MyDatePickerStyle" parent="@android:style/Widget.Material.DatePicker">
<item name="android:datePickerMode">spinner</item>
</style>
最后,在這樣的代碼中使用它
DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(),
R.style.CustomDatePickerDialogTheme, this, year, month, day);
return datePickerDialog;
- 3 回答
- 0 關注
- 630 瀏覽
添加回答
舉報