直接想起了之前农民伯伯有写过类似的~ 直奔了过去~
http://www.cnblogs.com/over140/archive/2011/09/20/2181532.html
照猫画虎弄了下 发下了些问题~
首先是那个findDialogPicker老是返回空,后来想,应该先show出来再去find吧~
一实验果然~所以在这里给各位提个醒.
伯伯用这句来隐藏控件
((ViewGroup) datePicker.getChildAt(0)).getChildAt(0).setVisibility(View.GONE);
很明显这个不能通用,修改下日期显示格式,这里面的第一个不是固定的,有可能是年,有可能是月,也有可能是日,而且貌似4.0又多了一层
后来网上又找到了一个哥们用反射取得DatePicker里面的所要的NumberPicker
http://liujunhg.iteye.com/blog/1700357
通过反射得到指定的NumberPicker控件然后,想gone哪个就gone哪个~ 哈喇子流了一地
发现2.2的系统上可以,4.0上面filedNotFoundException
去源码里面溜达了一圈发现名字变了,2.2上 ‘日’的NumberPicker叫mDayPicker而4.0上叫mDaySpinner,所以4.0上才找不到这个field
好吧,苯方法 来个‘或’就完事了,google要是再改,我再或~
Class pickerClass = datePicker.getClass(); Field[] fields = pickerClass.getDeclaredFields(); for (Field field : fields) { String fieldName = field.getName(); if ("mDayPicker".equals(fieldName) || "mDaySpinner".equals(fieldName)) { field.setAccessible(true); View dayView = (View) field.get(datePicker); dayView.setVisibility(View.GONE); break; } }
好了大功告成~ 做了个优化的工具类~可以随便gone掉年月日~
MyDatePickerDialog mdpd = new MyDatePickerDialog(this, null, mYear, mMonth, mDay); mdpd.hideWhich(true, false, false); mdpd.show();
MyDatePickerDialog继承自DatePickerDialog,之前你怎么用,现在还怎么用
那三个boolean分别对应年月日是否隐藏~
好了上传测试工程~有好事记得想着点我~