android系统自带时间控件:

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

TimePickerDialog 时间对话框控件


首先是布局的创建:


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

android:timePickerMode="clock"

另一种是:

android:timePickerMode="spinner"


TimePicker的显示规模大小设置

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

效果:


之后就是一些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));// 修改背景颜色


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. 点击LinearLayout使用selector改变TextView字体颜色
  3. Android纠正Activity横竖屏切换的生命周期的错误
  4. Android(安卓)常用控件(三)学习笔记
  5. android和vue交互之js调取原生安卓扫码库
  6. android:layout_weight详解
  7. android layout属性 .
  8. Android中使EditText失去焦点,edittext禁止弹出键盘
  9. CardView 设置水波纹效果

随机推荐

  1. ListView中Item高度设置
  2. Appuim运行Android真机自动化测试
  3. Android apk file
  4. Android Studio 无法启动模拟器
  5. 第八篇 TabHost控件
  6. 【Android】简单的接口回调
  7. Android程序员指南(15)
  8. Android Sensor HAL层分析
  9. Android仿真翻页
  10. Android中打开扬声器关闭麦克风的代码实