TimePicker的一些使用方法

首先是布局的创建:

 

 

<TimePicker
    android:id="@+id/timepicker"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:background="#ffffff"
     />

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

android:timePickerMode="clock"

 

另一种是:

android:timePickerMode="spinner"
之后就是一些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); //设置最小hour hourNumberPicker.setMaxValue(12); //设置最大hour
minuteNumberPicker .setMinValue(0); //设置最小minute
minuteNumberPicker .setMaxValue(30);  //设置最大minute
调用setNumberPickerDivider方法,将获取的hourNumberPicker和minuteNumberPicker分别传递进去即可设置所需
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(); } }

需要注意的是,如果TimePicker是在Dialog上显示的话,

timePicker.setIs24HourView(true);

是无效的,但是在popwindow上可以正常使用。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值