今天做的是TimePicker时间选择器,参考了几篇然后综合了一下
只是做在单独项目里的试验,首先导入,具体有没用到不清楚
implementation 'com.contrarywind:Android-PickerView:3.2.7'
<TimePicker android:id="@+id/timepicker" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:background="#ffffff" android:timePickerMode="spinner" tools:ignore="MissingConstraints" tools:layout_editor_absoluteX="78dp" tools:layout_editor_absoluteY="153dp" />
mTimepicker = (TimePicker)findViewById(R.id.timepicker); mTimepicker.setDescendantFocusability(TimePicker.FOCUS_BLOCK_DESCENDANTS); //设置点击事件不弹键盘 mTimepicker.setIs24HourView(true); //设置时间显示为24小时 mTimepicker.setHour(0); //设置当前小时 mTimepicker.setMinute(0); //设置当前分
String[] minuts = new String[]{"00","05","10","15","20","25", "30","35","40", "45","50","55"}; String[] hours=new String[]{"10","11","12","16","17","18","19"}; /** * 得到timePicker里面的android.widget.NumberPicker组件 (有两个android.widget.NumberPicker组件--hour,minute) * @param viewGroup * @return */ private List<NumberPicker> findNumberPicker(ViewGroup viewGroup) { List<NumberPicker> npList = new ArrayList<NumberPicker>(); View child = null; if (null != viewGroup) { for (int i = 0; i < viewGroup.getChildCount(); i++) { child = viewGroup.getChildAt(i); if (child instanceof NumberPicker) { npList.add((NumberPicker)child); } else if (child instanceof LinearLayout) { List<NumberPicker> result = findNumberPicker((ViewGroup)child); if (result.size() > 0) { return result; } } } } return npList; } /** * 查找timePicker里面的android.widget.NumberPicker组件 ,并对其进行时间间隔设置 * @param viewGroup TimePicker timePicker */ private void setNumberPickerTextSize(ViewGroup viewGroup){ List<NumberPicker> npList = findNumberPicker(viewGroup); if (null != npList) { for (NumberPicker mMinuteSpinner : npList) { // System.out.println("mMinuteSpinner.toString()="+mMinuteSpinner.toString()); if(mMinuteSpinner.toString().contains("id/minute")){//对分钟进行间隔设置 mMinuteSpinner.setMinValue(0); mMinuteSpinner.setMaxValue(minuts.length-1); mMinuteSpinner.setDisplayedValues(minuts); //这里的minuts是一个String数组,就是要显示的分钟值 } //对小时进行间隔设置 使用 if(mMinuteSpinner.toString().contains("id/hour")){}即可 if(mMinuteSpinner.toString().contains("id/hour")){//对分钟进行间隔设置 mMinuteSpinner.setMinValue(0); mMinuteSpinner.setMaxValue(hours.length-1); mMinuteSpinner.setDisplayedValues(hours); //这里的minuts是一个String数组,就是要显示的分钟值 } } } }