android系统自带时间控件:

DatePicker 日期显示控件 
DatePickerDialog 日期对话框控件
TimePicker 时间显示控件

TimePickerDialog 时间对话框控件


首先是布局的创建:


TimePicker 本身自带两种风格,都可以在xml中设置,一种是

android:timePickerMode="clock"
android 开发 时间选择器TimePicker的使用_第1张图片

另一种是:

android:timePickerMode="spinner"

android 开发 时间选择器TimePicker的使用_第2张图片

TimePicker的显示规模大小设置

android:scaleX="2"android:scaleY="2"

效果:

android 开发 时间选择器TimePicker的使用_第3张图片

之后就是一些TimePicker的使用方法了:

mTimepicker = (TimePicker) inflate.findViewById(R.id.timepicker);mTimepicker.setDescendantFocusability(TimePicker.FOCUS_BLOCK_DESCENDANTS);  //设置点击事件不弹键盘
mTimepicker.setIs24HourView(true);   //设置时间显示为24小时mTimepicker.setHour(8);  //设置当前小时mTimepicker.setMinute(10); //设置当前分(0-59)
mTimepicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {  //获取当前选择的时间    @Override    public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {    }});



接下来就是一些需要用到反射的方法了,比如更改分割线的样式,设置起始截止时间等:
首先我们要通过反射获取TimePicker源码里hour和minute的id:
Resources systemResources = Resources.getSystem();int hourNumberPickerId = systemResources.getIdentifier("hour", "id", "android");int minuteNumberPickerId = systemResources.getIdentifier("minute", "id", "android");
然后用我们定义的TimePicker来获取这个id并转换成hour和minute对应的NumberPicker: 
NumberPicker hourNumberPicker = (NumberPicker) mTimepicker.findViewById(hourNumberPickerId);NumberPicker minuteNumberPicker = (NumberPicker) mTimepicker.findViewById(minuteNumberPickerId);
通过获取到的hourNumberPicker和minuteNumberPicker我们可以先进行TimePicker的时间限制:
hourNumberPicker.setMinValue(8);   //设置最小hourhourNumberPicker.setMaxValue(12);  //设置最大hourminuteNumberPicker .setMinValue(0);  //设置最小minuteminuteNumberPicker .setMaxValue(30);  //设置最大minute

修改滚动条背景颜色:

hourNumberPicker.setBackgroundColor(getResources().getColor(R.color.colorBlue));// 修改背景颜色

android 开发 时间选择器TimePicker的使用_第4张图片

TimePicker分割线的颜色和高度:

private void setNumberPickerDivider(NumberPicker numberPicker) {    NumberPicker picker = numberPicker;    Field[] pickerFields = NumberPicker.class.getDeclaredFields();    for (Field pf : pickerFields) {        if (pf.getName().equals("mSelectionDivider")) {  //设置颜色            pf.setAccessible(true);            ColorDrawable colorDrawable = new ColorDrawable(                    ContextCompat.getColor(this, R.color.colortime)); //选择自己喜欢的颜色            try {                pf.set(numberPicker, colorDrawable);            } catch (IllegalAccessException e) {                e.printStackTrace();            }        }        if (pf.getName().equals("mSelectionDividerHeight")) {   //设置高度            pf.setAccessible(true);            try {                int result = 3;  //要设置的高度                pf.set(picker, result);            } catch (Exception e) {                e.printStackTrace();            }            break;        }        picker.invalidate();    }}

更多相关文章

  1. Android 常用控件(三)学习笔记
  2. Android中ExpandableListView控件基本使用
  3. 自定义控件与Handler

随机推荐

  1. Android activity 生命周期(一)
  2. 最新下载 android 源码方法
  3. androidEditTextinputType及android:imeO
  4. Android的数据存储之一------SharedPrefe
  5. Android通用流行框架大全
  6. 浅入浅出Android(012):Android下的计时器
  7. Android(安卓):Kernel Uevent发送(热插拔)事
  8. Android笔记----禁止横竖屏切换
  9. android基础--TextView详解
  10. Android 禁止切屏