为了账号安全,请及时绑定邮箱和手机立即绑定

在棒棒糖中没有日历可视化的Datepicker对话框[旋转模式]?

在棒棒糖中没有日历可视化的Datepicker对话框[旋转模式]?

繁花如伊 2019-12-03 10:09:34
我阅读了文档:http : //developer.android.com/guide/topics/ui/controls/pickers.html, 但是现在在棒棒糖中出现了日历(事件可以,但是设置生日很糟糕,我将使用微调模式。)而我无法将其删除!在布局中使用此属性很容易: <DatePicker datePickerMode="spinner"...>但是如果我尝试设置DatePickerDialog的代码dialogDatePicker.getDatePicker().setSpinnersShown(true);dialogDatePicker.getDatePicker().setCalendarViewShown(false); 这些属性不起作用,日历继续显示!public static class MyDatePicker extends DialogFragment implements DatePickerDialog.OnDateSetListener {        int pYear;        int pDay;        int pMonth;        @Override        public Dialog onCreateDialog(Bundle savedInstanceState) {            // Use the current date as the default date in the picker            final Calendar c = Calendar.getInstance();            int year = c.get(Calendar.YEAR);            int month = c.get(Calendar.MONTH);            int day = c.get(Calendar.DAY_OF_MONTH);            DatePickerDialog dialogDatePicker = new DatePickerDialog(getActivity(), this, year, month, day);            dialogDatePicker.getDatePicker().setSpinnersShown(true);            dialogDatePicker.getDatePicker().setCalendarViewShown(false);            return dialogDatePicker;            // Create a new instance of DatePickerDialog and return it            //return new DatePickerDialog(getActivity(), this, year, month, day);        }        public void onDateSet(DatePicker view, int year, int month, int day) {            pYear = year;            pDay = day;            pMonth = month;        }    }
查看完整描述

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设备的解决方法。


查看完整回答
反对 回复 2019-12-03
?
一只斗牛犬

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;


查看完整回答
反对 回复 2019-12-03
  • 3 回答
  • 0 关注
  • 588 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信