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

我阅读了文档: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;

        }

    }


繁花如伊
浏览 589回答 3
3回答

明月笑刀无情

DatePickerDialog使用活动主题指定的对话框主题。这是一个完全指定的主题,这意味着您需要重新指定在活动主题中设置的所有属性(例如日期选择器样式)。<style name="MyAppTheme" parent="android:Theme.Material">&nbsp; &nbsp; <item name="android:dialogTheme">@style/MyDialogTheme</item>&nbsp; &nbsp; <item name="android:datePickerStyle">@style/MyDatePicker</item></style><style name="MyDialogTheme" parent="android:Theme.Material.Dialog">&nbsp; &nbsp; <item name="android:datePickerStyle">@style/MyDatePicker</item></style><style name="MyDatePicker" parent="android:Widget.Material.DatePicker">&nbsp; &nbsp; <item name="android:datePickerMode">spinner</item></style>注意:由于版本222208的缘故,此功能在Android N / API 24中不起作用。在下一版本的平台中已修复此问题。没有适用于API 24设备的解决方法。

一只斗牛犬

我认为解决此问题的最佳方法是在XML文件中定义一种新样式,然后在代码中以编程方式使用它。尽管@alanv 答案是完美的并且可以正常工作,但是它的问题是它将应用于所有日期选择器。假设您有一个需要显示“日历”视图的DatePicker,而另一个有需要显示微调器视图的DatePicker,则此操作将无效。因此,在styles.xml中定义一个新样式。在名为values-v21的文件夹中创建此文件(请参见此处的命名结构),因为这些属性仅在棒棒糖发布后才引入。在棒棒糖之前,只有旋转器模式。&nbsp;<style name="CustomDatePickerDialogTheme" parent="android:Theme.Material.Light.Dialog">&nbsp; &nbsp; <item name="android:datePickerStyle">@style/MyDatePickerStyle</item></style><style name="MyDatePickerStyle" parent="@android:style/Widget.Material.DatePicker">&nbsp; &nbsp; <item name="android:datePickerMode">spinner</item></style>最后,在这样的代码中使用它DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(),&nbsp; &nbsp; R.style.CustomDatePickerDialogTheme, this, year, month, day);return datePickerDialog;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android