本文就时间和日期选择器做一个简单的使用

时间选择器

一般设置时间我们都会选择TimePicker或者TimePickerDialog,因为TimePickerDialog直接就是对话框使用方便,所以很多初学的就会更多选择TimePickerDialog,不说他会有什么不想要的效果,先看看它的使用方法

new TimePickerDialog(MainActivity.this,            new TimePickerDialog.OnTimeSetListener() {                @Override                public void onTimeSet(TimePicker view, int hour, int minute) {                    //在此获取时间:hour和minute,然后执行修改(要root权限)                }            }, calendar.get(Calendar.HOUR_OF_DAY),                 calendar.get(Calendar.MINUTE), true).show();

效果如下:

我们不管效果,就单单讲它的功能,你选择了时间之后,不管是点击完成还是点击了周围使得这个对话框消失,时间都已经被修改了,也就是说记这个完成按钮形同虚设,为什么会有这样的效果呢?因为这个对话框消失的时候就会调用onTimeSet方法(不管是点完成还是周围)
这不是我们想要的效果,我们要的是点击完成修改时间,点击周围退出时不修改时间。
这时候我们可能会想到监听一下完成按钮的点击不就行了吗,好我们来试试看:

TimePickerDialog timePickerDialog = new TimePickerDialog(this,                    new OnTimeSetListener() {                        @Override                        public void onTimeSet(TimePicker view, int hourOfDay,                                int minute) {                            //在此获取时间:hour和minute,然后执行修改(要root权限)                        }                    }, calendar.get(Calendar.HOUR_OF_DAY),                    calendar.get(Calendar.MINUTE), false);            timePickerDialog.setTitle(R.string.title);            timePickerDialog.setButton(TimePickerDialog.BUTTON_POSITIVE,                    getString(R.string.ok),                    new DialogInterface.OnClickListener() {                        public void onClick(DialogInterface dialog, int which) {                        }                    });            timePickerDialog.show();

这下好了在onClick中拿不到时间了,想想是不是可以定义一个全局变量什么的,在onTimeSet中设置,然后在onClick中拿到进行时间设置,但是,,,,这里要说但是,你会发现先执行的onclick然后执行的onTimeSet(我看有些博客说重写了onclick会不响应onTimeSet,但我这里没有遇到这个情况,就按我自己的测试结果写吧),我一开始也说了对话框消失的时候会调用onTimeSet,所以这里会出现那种每次点击确定会设置成上次选择的时间 的bug,效果很不理想,想了想,每次对话框消失的时候会调用onTimeSet,然后在其他地方又拿不到时间(就是我们滑动之后的那个时间),果断的不能用TimePickerDialog 实现我想要的效果,没办法只能选择使用较为麻烦的TimePicker。
TimePicker是一个控件,像button一样使用,得在xml中进行布局,下面是使用的详细方法。

<!--?xml version=1.0 encoding=utf-8?--><linearlayout android:layout_height="match_parent" android:layout_width="match_parent" android:orientation="vertical" android:padding="10dip" xmlns:android="http://schemas.android.com/apk/res/android">    <Timepicker android:id="@+id/date_picker" android:layout_gravity="center" android:layout_height="wrap_content" android:layout_margintop="5dip" android:layout_width="wrap_content">    </Timepicker >  </linearlayout>
//自定义控件                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);                View view = (LinearLayout) getLayoutInflater().inflate(R.layout.time_dialog, null);                final TimePicker timePicker = (TimePicker) view.findViewById(R.id.time_picker);                //初始化时间                calendar.setTimeInMillis(System.currentTimeMillis());                timePicker.setIs24HourView(true);                 timePicker.setCurrentHour(calendar.get(Calendar.HOUR_OF_DAY));                 timePicker.setCurrentMinute(Calendar.MINUTE);                 //设置time布局                builder.setView(view);                builder.setTitle("设置时间信息");                builder.setPositiveButton("确 定", new DialogInterface.OnClickListener() {                         @Override                        public void onClick(DialogInterface dialog, int which) {                             mHour = timePicker.getCurrentHour();                            mMinute = timePicker.getCurrentMinute();                            dialog.cancel();                         }                 });                 builder.create().show();

这样就实现了我们想要的效果。

日期选择器

日期选择器的实现使用DatePicker和DatePickerDialog,其他的可以参考上面的时间选择器,基本都是一样的,这里不再过多的介绍。

更多相关文章

  1. Android对话框实现
  2. Android(安卓)流式布局(标签效果)
  3. Android(安卓)中一些小经验总结
  4. Android(安卓)如何去除桌面上下边框暗度逐渐变暗的效果
  5. RecyclerView
  6. android打印信息
  7. Android使用glide实现毛玻璃效果
  8. 实现android 前后摄像头切换效果
  9. android实现垂直方向跑马灯效果

随机推荐

  1. Android(安卓)常用RGB值及名称
  2. Android 进程间通信之LocalSocket
  3. 无法安装android sdk
  4. 与Android有关的三起诉讼事件
  5. Android常见错误之[email&#160;protected
  6. Android Root原理分析及防Root新思路
  7. android拨打电话流程分析
  8. Android获取Apk文件图标信息
  9. Android内核和驱动的详细介绍
  10. Android材料设计之材料主题