【问题标题】:DatePickerDialog is not going to spinner mode from xmlDatePickerDialog 不会从 xml 进入微调器模式
【发布时间】:2019-12-17 09:45:38
【问题描述】:

我似乎无法通过 xml 将 datepickerdialog 转换为微调器。我目前没有使用有错误的 API 24。 我尝试通过定义一种新样式来做到这一点,并在创建 DatePickerDialog 时使用它,就像推荐的 here 一样,但它仍然不起作用;

    <style name="CustomDatePickerDialog" parent="android:Theme.Material.Light.Dialog">
        <item name="android:datePickerStyle">@style/MyDatePickerStyle</item>
    </style>

    <style name="MyDatePickerStyle" parent="@android:style/Widget.Material.Light.DatePicker">
        <item name="android:datePickerMode">spinner</item>
        <item name="android:calendarViewShown">false</item>
        <item name="android:spinnersShown">true</item>
    </style>

这里是对话框定义;

dialog = new DatePickerDialog(CurrentActivity.this, R.style.CustomDatePickerDialog, new DatepickerDialog.OnDateSetListener() {...}, y,m,d);
dialog.show();

奇怪的是,如果我在对话框实例化之后和显示它之前在代码中定义这两行,它只会向我显示微调器,这就是我想要的;

dialog.getDatePicker().setCalendarViewShown(false);
dialog.getDatePicker().setSpinnersShown(true);

我不明白为什么 xml 对我不起作用,尽管其他人似乎对它很好。我使用了错误的上下文吗?欢迎任何帮助。

编辑:我遇到了问题,因为我不想使用已弃用的两行来解决我的问题。所以这意味着我也不想使用 Theme_Holo_Light 或其他类似的已弃用主题。

【问题讨论】:

  • 你检查过this的答案吗?它可能会帮助你。
  • 已经看过了,据我了解对我没有帮助

标签: android xml datepicker spinner datepickerdialog


【解决方案1】:

您可以调用此函数并将日期选择器实例作为参数传递。

public static void getDateYearMonth(Activity activity, String date, DatePickerDialog.OnDateSetListener mDateSetListener) {
            int year;
            int month;
            int day;
            if (date == null || date.isEmpty()) {
                Calendar cal = Calendar.getInstance();
                year = cal.get(Calendar.YEAR);
                month = cal.get(Calendar.MONTH);
                day = cal.get(Calendar.DAY_OF_MONTH);
            } else {
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm");
                Date dateObj = null;
                try {
                    dateObj = sdf.parse(date);
                    Calendar cal = Calendar.getInstance();
                    cal.setTime(dateObj);
                    year = cal.get(Calendar.YEAR);
                    month = cal.get(Calendar.MONTH);
                    day = cal.get(Calendar.DAY_OF_MONTH);
                } catch (ParseException e) {
                    e.printStackTrace();
                    Calendar cal = Calendar.getInstance();
                    year = cal.get(Calendar.YEAR);
                    month = cal.get(Calendar.MONTH);
                    day = cal.get(Calendar.DAY_OF_MONTH);
                }
            }

            DatePickerDialog dialog = new DatePickerDialog(
                    activity,
                    android.R.style.Theme_Holo_Light_Dialog_MinWidth,
                    mDateSetListener,
                    year, month, day);
            dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
            dialog.show();
        }

希望这能解决您的问题。 快乐编码!

【讨论】:

  • 它没有帮助,因为到目前为止我已经看到了没有什么新东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-02
  • 1970-01-01
  • 2015-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-27
相关资源
最近更新 更多