Android日期控件——只显示年月(通用版)

 

  转载请注明出处:http://blog.csdn.net/wudiwo/article/details/8287200

  以前项目中写的一个功能,大体根据年月查询部门人员当月考勤情况,如今项目早已交付使用。那时候领导都在用三星的i9003 Android2.2版本系统还算是主流吧,因此诞生了下面的实现:datepicker控件中内置了三个NumberPicker控件,找到显示日的控件,然后将其隐藏掉

DatePicker dp =this.findViewById(R.id.dp);

  if (dp != null) {
            ((ViewGroup) dp.getChildAt(0)).getChildAt(0).setVisibility(View.GONE);
  } 
但好景不长,不久领导们换了新手机,新手机配上了高版本系统,于是问题出现了。

 在2.2系统中DatePicker控件保含了一个LinearLayout子view,而LinearLayout中包含三个NumberPicker控件分别用来显示年月日NumberPicker控件中又包含了三个子view。

在4.0系统中DatePicker中view层次结构与2.2不同,多了一层:

DatePicker包含了一个子view:LinearLayout.

LinearLayout中包含了两个子view:LinearLayout和CalendarView.

子LiearLayout中包含了三个NumberPicker控件

这就造成上面的那段代码在4.0中是达不到目的。

于是才有了下面的实现: 

先上图大体效果是这样


上面的实现是有点类似于ios的时间控件效果。 最初的源码忘了来源何处了,这是在源码的基础是上过的效果。

代码量有点大就不一一贴出来了,要码的留下邮箱!

后来发现有说4.0版本版本下还可以这样实现:

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

本没有亲自试过,有心人试过了望告之。

转载请注明出处:http://blog.csdn.net/wudiwo/article/details/8287200

下载地址:http://download.csdn.net/detail/wudiwo/4897008


你可能感兴趣的:(Android)