【问题标题】:Show DatePicker with other calendar system使用其他日历系统显示 DatePicker
【发布时间】:2013-05-04 05:21:27
【问题描述】:

我有一个自定义对话框中的日期选择器,它显示日期,用户可以选择日期,我得到用户选择的日期。现在我想通过显示其他日历走得更远

例如波斯历日期而不是公历日期。现在在我的应用程序中,当用户从日期选择器中选择日期时,我可以在日志中返回波斯日期。但我不知道如何更改 DatePicker 以显示 perisan 日期。请帮助。

 @Override
 public boolean onCreateOptionsMenu(Menu menu)
 {
    menu.add("Add Detail").setIcon(R.drawable.ic_compose).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
    return true;
 }

 @Override
 public boolean onOptionsItemSelected(MenuItem item)
 {
    final Dialog dialog = new Dialog(this);
    dialog.setContentView(R.layout.custom);

    final EditText amount = (EditText) dialog.findViewById(R.id.amtEditText);
    final DatePicker datePicker = (DatePicker) dialog.findViewById(R.id.datePicker1);
    Button cancelButton = (Button) dialog.findViewById(R.id.canelButton);
    Button OKButton = (Button) dialog.findViewById(R.id.OKbutton);

    OKButton.setOnClickListener(new View.OnClickListener() 
    {
        @Override
        public void onClick(View v) 
        {
            Log.d("---------------", datePicker.getDayOfMonth() +" " 
                                   + datePicker.getMonth() + " " 
                                   + datePicker.getYear() + " " 
                                   + amount.getText());

            Toast.makeText(MainActivity.this, "Got click: "
                                 + datePicker.getDayOfMonth() + " " 
                                 + datePicker.getMonth() + " " 
                                 + datePicker.getYear(), Toast.LENGTH_SHORT).show();

            CivilDate civil = new CivilDate(datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth());
            PersianDate perDate = DateConverter.civilToPersian(civil);

            Log.d("-------", perDate.getDayOfMonth()+ " " + (perDate.getMonth() + 1) + " " + perDate.getYear() + " " + perDate.getMonthName());
            datePicker.init(perDate.getYear(), (perDate.getMonth() + 1), perDate.getDayOfMonth(), null);
        }
    });

【问题讨论】:

    标签: android datepicker


    【解决方案1】:

    而不是使用DatePicker 切换到使用Android Wheel 库。 它由 Google 开发人员编写,可以设计成类似于 Android DatePicker 的样式,它还可以在旧手机上提供一致的外观和感觉。

    它不受您可以在字段中输入的内容的限制,这意味着您可以使用任何您想要的东西。

    【讨论】:

      【解决方案2】:

      有图书馆。 您可以在the library's github page获取更多信息。

      来自 DatePickerDialog 的屏幕截图

      【讨论】:

        【解决方案3】:

        不是真正可移植的方法是使用反射进入 DatePicker,获取微调器并将微调器的内容明确设置为您需要的内容。

        这是我使用反射将 TimePicker 中的时间替换为日本传统时间的代码:https://github.com/aragaer/jtt_android/blob/0855eb7ae1b3de897640bf560cc3bda700cbc2e2/src/com/aragaer/jtt/JttPickerDialog.java 根据 API 版本调用 fixOldfixNew 两种方法之一。 API 的更改可能会导致任一 fixNew 在更新版本上失败,这就是为什么它不是真正的好方法。

        更好的方法可能是简单地复制 DatePicker 的代码和布局,并从中创建您自己的自定义视图。

        【讨论】:

          猜你喜欢
          • 2013-07-31
          • 1970-01-01
          • 2013-05-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-27
          • 2016-12-01
          • 2022-07-12
          相关资源
          最近更新 更多