DatePickerDialog隐藏年月日

项目中的需求隐藏掉日~ 只保留年和月~

直接想起了之前农民伯伯有写过类似的~ 直奔了过去~
[url]http://www.cnblogs.com/over140/archive/2011/09/20/2181532.html[/url]


照猫画虎弄了下 发下了些问题~

首先是那个findDialogPicker老是返回空,后来想,应该先show出来再去find吧~

一实验果然~所以在这里给各位提个醒.

伯伯用这句来隐藏控件


((ViewGroup) datePicker.getChildAt(0)).getChildAt(0).setVisibility(View.GONE);


很明显这个不能通用,修改下日期显示格式,这里面的第一个不是固定的,有可能是年,有可能是月,也有可能是日,而且貌似4.0又多了一层

后来网上又找到了一个哥们用反射取得DatePicker里面的所要的NumberPicker
[url]http://liujunhg.iteye.com/blog/1700357[/url]


通过反射得到指定的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分别对应年月日是否隐藏~

好了上传测试工程~有好事记得想着点我~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值