日期控件DatePicker只显示年月不显示日

来源:互联网 发布:js 导出excel插件 编辑:程序博客网 时间:2024/05/16 17:08

有两种方式可以达到此目的:

一、在xml布局中定义datepicker控件时,设置width小一些,只够显示年月,不够显示日。

二、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,分别是NumberPickerButton("+"号)\EditText\NumberPickerButton("-"号);

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

DatePicker包含了一个子view:LinearLayout.

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

子LiearLayout中包含了三个NumberPicker控件

NumberPicker控件中包含了三个子控件:NumberPickerButton("+"号)\EditText\NumberPickerButton("-"号)。

这就造成上面的那段代码在4.0中是达不到目的,想要在4.0中也实现该功能需修改代码如下:

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


应该可以根据遍历一层一层遍历DatePicker的子view当符合NumberPicker的时候再隐藏。

原创粉丝点击