有兩種方式可以達(dá)到此目的:
一、在xml布局中定義datepicker控件時(shí),設(shè)置width小一些,只夠顯示年月,不夠顯示日。
二、datepicker控件中內(nèi)置了三個(gè)NumberPicker控件,找到顯示日的控件,然后將其隱藏掉
DatePicker dp =this.findViewById(R.id.dp);
if (dp != null) { ((ViewGroup) dp.getChildAt(0)).getChildAt(0).setVisibility(View.GONE); }
在2.2系統(tǒng)中DatePicker控件保含了一個(gè)LinearLayout子view,而LinearLayout中包含三個(gè)NumberPicker控件分別用來(lái)顯示年月日,NumberPicker控件中又包含了三個(gè)子view,分別是NumberPickerButton("+"號(hào))\EditText\NumberPickerButton("-"號(hào));
在4.0系統(tǒng)中DatePicker中view層次結(jié)構(gòu)與2.2不同,多了一層:
DatePicker包含了一個(gè)子view:LinearLayout.
LinearLayout中包含了兩個(gè)子view:LinearLayout和CalendarView.
子LiearLayout中包含了三個(gè)NumberPicker控件
NumberPicker控件中包含了三個(gè)子控件:
NumberPickerButton("+"號(hào))\EditText\NumberPickerButton("-"號(hào))。
這就造成上面的那段代碼在4.0中是達(dá)不到目的,想要在4.0中也實(shí)現(xiàn)該隱藏日的功能需修改代碼如下:
((ViewGroup)((ViewGroup) dp.getChildAt(0)).getChildAt(0)).getChildAt(0).setVisibility(View.GONE);