android 开发 时间选择器TimePicker的使用
android系统自带时间控件:
DatePicker 日期显示控件
DatePickerDialog 日期对话框控件
TimePicker 时间显示控件
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); //设置最小hour
hourNumberPicker.setMaxValue(12); //设置最大hour
minuteNumberPicker .setMinValue(0); //设置最小minute
minuteNumberPicker .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();
}
}
posted on
2018-06-01 15:33 观心静 阅读(
...) 评论(
...) 编辑 收藏