• 关于DatePicker设置MinDate和MaxDate的几个坑


    好久没写了,格式什么的先算了

    最近搞安卓app,需要使用到选择日期的控件,首先使用了DatePickerDialog,继承自AlertDialog,内部使用了DatePicker。
    如果需要修改样式的话就不是很方便了,可以自己派生一个DatePickerDialog的子类,再使用AlertDialog的方法设置样式。
    不过比较灵活且更兼容API Level 11之前平台的方法是产生一个AlertDialog,通过Bulider来调整样式,使用SetView将一个DatePicker设为View。

      mButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    mCalendar = Calendar.getInstance();
                    final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
                    final DatePicker dp = new DatePicker(getActivity());
                    dp.setCalendarViewShown(false);//注意:如果使用了setMaxDate必须关掉CalenderView,否则会报错"FATAL EXCEPTION: main java.lang.NullPointerException",
                    long mindate = System.currentTimeMillis() - 1000L;  //注意:如果不提前一秒的话会报错"java.lang.IllegalArgumentException: fromDate: XXX does not precede toDate: XXX"
                    long maxdate = mindate + 7 * 24 * 3600 * 1000L; //设置DatePicker范围,从今天起之后一周
                    dp.setMinDate(mindate);
                    dp.setMaxDate(maxdate);
                    builder.setView(dp);
                    builder.setTitle(getString(R.string.pls_select_date));
                    builder.setPositiveButton(getString(R.string.set), new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
    //                       TODO: Dispatch listener to Activity
                            String new_text = (dp.getMonth() + 1) + getString(R.string.month) + dp.getDayOfMonth() + getString(R.string.day);
                            mButton.setText(new_text); //可以设置日期之后修改Button文字之类的。
                        }
                    });
                    builder.setNegativeButton(getString(R.string.cancel), null);
                    builder.show();
                }
            });
    

    需要注意的就是这两点。

  • 相关阅读:
    Vue 02
    Vue 初识
    复杂数据类型之函数 对象
    Collections工具类
    遍历集合的方法总结
    使用Iterator迭代器遍历容器元素(List/Set/Map)
    TreeSet的使用和底层实现
    HashSet基本使用
    HashSet底层实现
    TreeMap的使用和底层实现
  • 原文地址:https://www.cnblogs.com/zyfgs2012/p/4822011.html
Copyright © 2020-2023  润新知