日期控件DatePicker隐藏年或者隐藏日

有两种方式可以达到此目的:
一、在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隐藏年或者隐藏日)