有两种方式可以达到此目的:
一、在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);