【问题标题】:Difference between these two types of Datepicker dialog这两种类型的 Datepicker 对话框之间的区别
【发布时间】:2017-05-12 07:47:34
【问题描述】:

您好,我一直在使用 android 中的 datepickerdialog,并且我将第一个对话框作为 o/p。但是如何获得像 Datepickerdialog 这样的第二张图像。它完全取决于Android OS版本吗?我正在使用 6.0 设备进行测试。

我使用的代码是

 new DatePickerDialog(getContext(), date, myCalendar
                        .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
                        myCalendar.get(Calendar.DAY_OF_MONTH)).show();

【问题讨论】:

  • 正如你所说,这取决于你的操作系统版本,但是你可以使用模拟器来检查所有不同的版本和他的布局
  • 第二类日期选择器从哪个版本开始包含在android中?
  • 我有 5.1 ,我得到了第二种日期选择器对话框。
  • @KarthikKPN 在棒棒糖上方。但是您只需进行少量自定义即可实现两者。
  • 正如你所说,这取决于你的操作系统版本,但是你可以使用模拟器来检查所有不同的版本和他的布局

标签: android


【解决方案1】:

当前 Android 系统的 DatePicker 和 Calendar 视图中有两个日期小部件。 DatePicker 自 API 1 以来一直在使用,但日历视图仅在 API 11 中引入。两者之间的主要区别在于它们的外观。由于它们的工作方式几乎相同,而且 DatePicker 更加通用,这是我们将使用的小部件。

只要您使用最新的 API 和默认布局,它将以日历格式显示(查询中的第二张图片):

如果您在较早的 Lollipop 前 Android 版本上运行您的应用,那么您将看到以 Holo 为主题的微调器版本(第一张图片)。

您可以通过将 datePickerMode 设置为 spinner 来选择在所有 Android 版本中显示全息微调器版本。

作为替代方案,您还可以通过将 CalendarViewShown 设置为 true 来选择在微调器模式下显示完整的日历。 spinnerShown 属性也可以设置为 false 以删除微调器。

【讨论】:

    【解决方案2】:

    我在 6.0 上使用此代码获得第二个对话框

     final Calendar myCalendar = Calendar.getInstance();
                final DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {
    
                    @Override
                    public void onDateSet(DatePicker view, int year, int monthOfYear,
                                          int dayOfMonth) {
                        // TODO Auto-generated method stub
                        myCalendar.set(Calendar.YEAR, year);
                        myCalendar.set(Calendar.MONTH, monthOfYear);
                        myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
                        String myFormat = "MM/dd/yy"; //In which you need put here
                        SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);
                        eventDate.setText(sdf.format(myCalendar.getTime()));
                        CityText.setTextColor(Color.WHITE);
                        InputMethodManager imm = (InputMethodManager) getApplicationContext().getSystemService(Main2Activity.context.INPUT_METHOD_SERVICE);
                        if (imm.isAcceptingText()) {
                            //If keyboard is VISIBLE then Hide it
                            imm.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), 0);
                        }
                    }
                };
    
    
                assert eventDateParent != null;
                eventDateParent.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                       DatePickerDialog dpd = new DatePickerDialog(Main2Activity.context, date, myCalendar
                                .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
                                myCalendar.get(Calendar.DAY_OF_MONTH));
    
                        SimpleDateFormat sdf =  new SimpleDateFormat("dd/MM/yyyy");
    
                        Date d = null;
                        try {
                            d = sdf.parse(String.valueOf(sdf.format(new Date())));
                        } catch (ParseException e) {
                            e.printStackTrace();
                        }
    
                        dpd.getDatePicker().setMinDate(d.getTime());
                            dpd.show();
    
    
    
                    }
                });
    

    如果有帮助请告诉我

    【讨论】:

    • 老兄,这是一个默认的 DatePickerDialog。此代码将生成差异。 diff os 版本中的日历视图。
    • 我知道,但正如我上面提到的,我得到了第二个对话框
    【解决方案3】:

    在 Pre Lollipop 版本中,您将看到第一个。 如果您仍然需要第二个,我猜您将需要使用一些库。

    这个答案可能会有所帮助.. Android Material Design Datepicker with AppCompat

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-04
      • 2021-05-15
      • 1970-01-01
      • 1970-01-01
      • 2016-07-31
      • 2011-07-14
      • 2020-10-13
      • 2011-03-27
      相关资源
      最近更新 更多