【问题标题】:Show Only Month Picker in MaterialDateTimePicker在 MaterialDateTimePicker 中仅显示月份选择器
【发布时间】:2016-11-30 07:13:11
【问题描述】:

我将这个link 用于日期选择器,我只想在日期选择器中显示月份。我怎样才能做到这一点?

也知道

  • 如何显示仅年份选择器。

【问题讨论】:

标签: android android-datepicker


【解决方案1】:

您可以使用以下库:https://github.com/lutvie72/RackMonthPicker

 new RackMonthPicker(this)
     .setPositiveButton(new DateMonthDialogListener() {
           @Override
           public void onDateMonth(int month, int startDate, int endDate, int year, String monthLabel) {

           }
      })
      .setNegativeButton(new OnCancelMonthDialogListener() {
            @Override
            public void onCancel(AlertDialog dialog) {

            }
      }).show();

【讨论】:

  • 这个库最关键的问题是它默认显示硬编码的 2017 年。
  • 虽然作者已经修复了它,但它仍然没有发布。您可以找到已修复问题的快照 1.5.1。
【解决方案2】:

这是我认为最好的选择:https://github.com/DogusTeknoloji/compose-date-picker

年份选择器:

月份选择器:

ComposeCalendar(  
  minDate: Date? = null,  // Set min selectable date
  maxDate: Date? = null,  // Set max selectable date
  locale: Locale = Locale.getDefault(),  // Set locale for localization
  title: String = "",  // Set title 
  listener: SelectDateListener, // Set Listener for selected date
  showOnlyMonth: Boolean = false,  // Display only month picker
  showOnlyYear: Boolean = false,  // Display only year picker
  themeColor:Color = Color(0xFF614FF0), // Set picker color 
  negativeButtonTitle:String = "CANCEL",  // Set negative button text
  positiveButtonTitle:String = "OK"  // Set positive button text
)

【讨论】:

    【解决方案3】:

    最简单的方法,也许不是最纯粹的方法是扩展DatePickerDialog 所有你需要它来覆盖onYearSelected 回调,然后还有newInstance,因为如果你不这样做,它将产生DatePickerDialog,而不是新的YearOnlyPicker 对象。另外在newInstance 我已经添加了showYearPickerFirst(true) 电话,但它也可以从外面完成。然后,您可以将此对话框用作原始对话框。这是一种 hack,但这是在不修改库源代码的情况下实现这一目标的唯一方法

    这是扩展 DatePickerDialog 的类

        import com.wdullaer.materialdatetimepicker.date.DatePickerDialog;
    
        public class YearOnlyPicker extends DatePickerDialog {
    
            public static YearOnlyPicker newInstance(OnDateSetListener callBack, int year,
                                               int monthOfYear,
                                               int dayOfMonth) {
                YearOnlyPicker ret = new YearOnlyPicker();
                ret.showYearPickerFirst(true);
                ret.initialize(callBack, year, monthOfYear, dayOfMonth);
                return ret;
            }
            @Override
            public void onYearSelected(int year) {
                super.onYearSelected(year);
                notifyOnDateListener();
                dismiss();
    
            }
        }
    

    【讨论】:

    • 嗨,仅月视图怎么样
    • 您的意思是只有月份名称的微调器? MaterialDateTimePicker 中没有这样的视图-您需要自己实现它-您可以基于 Year View,因为它的工作原理相同,但我认为从头开始实现它会更容易,因为它是简单的 sppinner 视图
    • 也许这个能满足你的需求:github.com/resengupta/Month-Year-Date-Picker
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 2017-08-30
    • 2012-05-10
    • 1970-01-01
    • 2020-01-14
    • 2011-05-06
    相关资源
    最近更新 更多