DatePicker隐藏“天”选择
来源:互联网 发布:足球球员数据统计表格 编辑:程序博客网 时间:2024/05/22 03:13
最近使用了DatePicker 这个控件,采用的是往上又一次分装的这种,就是两个卡片切换选择年月日和时间。
有一个需求时这个选择器不显示出来“天”的这个选项。查资料发现,有人做了实现,具体代码还没弄清楚,可以研究DatePicker源码,这里主要是根据反射原理获取到DatePicker中的一些域,同时代码获取到布局,然后在进行操作,如:修改分割线颜色,隐藏某一个域等。这里做一个记录,方便后续使用。
创建对象是调用方法:
/** * 隐藏“天” * @param mDatePicker */ private void hideDay(DatePicker mDatePicker) { try { /* 处理android5.0以上的特殊情况 */ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { int daySpinnerId = Resources.getSystem().getIdentifier("day", "id", "android"); if (daySpinnerId != 0) { View daySpinner = mDatePicker.findViewById(daySpinnerId); if (daySpinner != null) { daySpinner.setVisibility(View.GONE); } } } else { Field[] datePickerfFields = mDatePicker.getClass().getDeclaredFields(); for (Field datePickerField : datePickerfFields) { if ("mDaySpinner".equals(datePickerField.getName()) || ("mDayPicker").equals(datePickerField.getName())) { datePickerField.setAccessible(true); Object dayPicker = new Object(); try { dayPicker = datePickerField.get(mDatePicker); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } ((View) dayPicker).setVisibility(View.GONE); } } } } catch (Exception e) { e.printStackTrace(); } }
这个方法就可以完成需求的操作。由此方法也能衍生出“月”,“年”等不同项的操作,这几个操作没有详细了解,待后续研究。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { int daySpinnerId = Resources.getSystem().getIdentifier("day", "id", "android"); if (daySpinnerId != 0) { View daySpinner = dp_mes.findViewById(daySpinnerId); if (daySpinner != null) { daySpinner.setVisibility(View.GONE); } } int monthSpinnerId = Resources.getSystem().getIdentifier("month", "id", "android"); if (monthSpinnerId != 0) { View monthSpinner = dp_mes.findViewById(monthSpinnerId); if (monthSpinner != null) { monthSpinner.setVisibility(View.VISIBLE); } } int yearSpinnerId = Resources.getSystem().getIdentifier("year", "id", "android"); if (yearSpinnerId != 0) { View yearSpinner = dp_mes.findViewById(yearSpinnerId); if (yearSpinner != null) { yearSpinner.setVisibility(View.GONE); } } } else { //Older SDK versions Field f[] = dp_mes.getClass().getDeclaredFields(); for (Field field : f) { if (field.getName().equals("mDayPicker") || field.getName().equals("mDaySpinner")) { field.setAccessible(true); Object dayPicker = null; try { dayPicker = field.get(dp_mes); } catch (IllegalAccessException e) { e.printStackTrace(); } ((View) dayPicker).setVisibility(View.GONE); } if (field.getName().equals("mMonthPicker") || field.getName().equals("mMonthSpinner")) { field.setAccessible(true); Object monthPicker = null; try { monthPicker = field.get(dp_mes); } catch (IllegalAccessException e) { e.printStackTrace(); } ((View) monthPicker).setVisibility(View.VISIBLE); } if (field.getName().equals("mYearPicker") || field.getName().equals("mYearSpinner")) { field.setAccessible(true); Object yearPicker = null; try { yearPicker = field.get(dp_mes); } catch (IllegalAccessException e) { e.printStackTrace(); } ((View) yearPicker).setVisibility(View.GONE); } } }}
选择器连接:https://github.com/jjobes/SlideDateTimePicker
0 0
- DatePicker隐藏“天”选择
- DatePicker隐藏年月日显示
- 日积月累:调用Anroid私有API(隐藏DatePicker的日期选择)
- 日期选择控件 (DatePicker)
- 日期选择datepicker
- jquery datepicker 选择月份
- 日期选择控件-DatePicker
- DatePicker - 日期选择插件
- BootStrop datepicker 选择年月
- DatePicker - 日期选择插件
- DatePicker隐藏年、月、日
- Datepicker日期选择框插件
- 日期选择插件 My97 Datepicker
- android 日期选择控件 DatePicker
- 日期选择代码,使用datepicker
- 时间选择器,选择日期DatePicker
- DatePicker月份字体大小,月份宽度,隐藏月份
- jQuery学习之:Datepicker日期选择插件
- -bash: wget: command not found的两种解决方法
- C++作业4
- 顺时针打印矩阵
- Android 隐藏软键盘、进出动画、图片进行缩放
- 在Ubuntu 14.04 上安装 Xmind
- DatePicker隐藏“天”选择
- 微信小程序 图片宽度自动
- int float double BigDecimal
- 7Java学习笔记之数据结构——HashMap
- 【个人笔记重点,不作为参考】主题:angular2.0笔记
- 直方图内最大矩形:用栈实现一些之前可以确定的值。
- hdu 1455 Sticks 【dfs剪枝】
- Weka连接数据库不成功:unable to find a suitable driver for jdbc:mysql://localhost/programmableweb
- getaddrinfo简单应用——取得IP地址