android日历之滚动选择日期类似ios
16lz
2021-01-23
使用的控件 DatePicker
默认的DatePicker
添加如下代码即可设置成滚动的选择日历
android:datePickerMode=”spinner”
android:calendarViewShown=”false”
初始化日历控件设置
调用初始化方法
public void init(int year, int monthOfYear, int dayOfMonth,
OnDateChangedListener onDateChangedListener)
参数内容分别对应年、月、日
注意:
我们设置不同语言的日历,年月日显示的顺序是不一样的
所以我们要判断语言(特别的只显示部分时间,例如只显示年、月或者只显示年份等)
我们创建一个实例对象mDatePicker
if ( mDatePicker != null) { if (getResources().getConfiguration().locale.getCountry().equals("CN")){ ((ViewGroup)((ViewGroup) mDatePicker.getChildAt(0)).getChildAt(0)).getChildAt(2).setVisibility(View.GONE); } else{ ((ViewGroup)((ViewGroup) mDatePicker.getChildAt(0)).getChildAt(0)).getChildAt(1).setVisibility(View.GONE); } }
上述代码是只显示年、月,去除日,对于语言是中文,我们隐藏最后一行的view 。 对于语言是英语我们隐藏中间的view。
以上就可以显示对应的日期了,同时我们系统默认的分割线是蓝色的,我们可以自定义分割线颜色。调用如下函数
,颜色修改R.color.green
private void setDatePickerDividerColor(DatePicker datePicker){ // Divider changing: // 获取 mSpinners LinearLayout llFirst = (LinearLayout) datePicker.getChildAt(0); // 获取 NumberPicker LinearLayout mSpinners = (LinearLayout) llFirst.getChildAt(0); for (int i = 0; i < mSpinners.getChildCount(); i++) { NumberPicker picker = (NumberPicker) mSpinners.getChildAt(i); Field[] pickerFields = NumberPicker.class.getDeclaredFields(); for (Field pf : pickerFields) { if (pf.getName().equals("mSelectionDivider")) { pf.setAccessible(true); try { pf.set(picker, new ColorDrawable(this.getResources().getColor(R.color.green))); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (Resources.NotFoundException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } break; } } } }
更多相关文章
- C语言函数以及函数的使用
- 八款android日历 [Calendar] 开源项目框架分类总汇
- Android日历只显示年月,只显示年
- android webkit 初始化流程
- Netty多语言(Java、Android 、C#、WebSocket)通信实例Demo (三)Andro
- 【基于Android的ARM汇编语言系列】之六:NEON指令集与VFP指令集
- Android中的日历读写操作!!!
- 日历视图的XML属性
- Netty多语言(Java、Android 、C#、WebSocket)通信实例Demo (一)概述