android timepicker 设置时间间隔
16lz
2021-01-23
我的解决方法是继承android TimePicker 类
修改其构造函数
public TimePicker(Context context, AttributeSet attrs, int defStyle) {// minute 的部分 mMinuteSpinner = (NumberPicker) findViewById(R.id.minute); mMinuteSpinner.setMinValue(0); mMinuteSpinner.setMaxValue(3); mMinuteSpinner.setDisplayedValues(new String[]{"0", "15", "30", "45"}); mMinuteSpinner.setOnLongPressUpdateInterval(100);}
网络上的其他主流方法是:
这种方法的缺点在于其前后几个值不正确。具体可以自己写个试试The following worked for me.
First, in onCreate:
pickStartTime = (TimePicker)findViewById(R.id.StartTime); pickStartTime.setOnTimeChangedListener(mStartTimeChangedListener);
Set the OnTimeChangedListener:
private TimePicker.OnTimeChangedListener mStartTimeChangedListener = new TimePicker.OnTimeChangedListener() { public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { updateDisplay(view, startDate, hourOfDay, minute); } };
Null OnTimeChangedListener (explained in comments in updateDisplay below):
private TimePicker.OnTimeChangedListener mNullTimeChangedListener = new TimePicker.OnTimeChangedListener() { public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { } }; private void updateDisplay(TimePicker timePicker, Date date, int hourOfDay, int minute) { // do calculation of next time int nextMinute = 0; if (minute >= 45 && minute <= 59) nextMinute = 45; else if(minute >= 30) nextMinute = 30; else if(minute >= 15) nextMinute = 15; else if(minute > 0) nextMinute = 0; else { nextMinute = 45; } // remove ontimechangedlistener to prevent stackoverflow/infinite loop timePicker.setOnTimeChangedListener(mNullTimeChangedListener); // set minute timePicker.setCurrentMinute(nextMinute); // hook up ontimechangedlistener again timePicker.setOnTimeChangedListener(mStartTimeChangedListener); // update the date variable for use elsewhere in code date.setMinutes(nextMinute); }
更多相关文章
- Android学习(十) SQLite 基于内置函数的操作方式
- android的webview调用javascript函数并得到返回值
- Android 数据查询query函数参数解析
- android 4.0横屏重复调用onCreate()函数
- Android利用系统提供的函数或常量判断版本大小
- 使用Kotlin开发Android 扩展函数(Extensions)
- android调用高版本api函数的兼容性问题
- Android O system函数执行reboot命令失败
- Android下使用dlopen函数动态调用.so链接库 [转]