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的文件夹中创建此文件(请参见此处的命名结构),因为这些属性仅在棒棒糖发布后才引入。在棒棒糖之前,只有旋转器模式。
<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 关注
- 588 浏览
添加回答
举报