DatePicker只顯示月日,不顯示年
阿新 • • 發佈:2019-01-29
datepicker控制元件中內建了三個NumberPicker控制元件,找到顯示日的控制元件,然後將其隱藏掉。
在2.2系統中DatePicker控制元件保含了一個LinearLayout子view,而LinearLayout中包含三個NumberPicker控制元件分別用來顯示年月日,NumberPicker控制元件中又包含了三個子view,分別是NumberPickerButton("+"號)\EditText\NumberPickerButton("-"號);
1.顯示月日,不顯示年:
if(datePicker != null){ ((ViewGroup) datePicker.getChildAt(0)).getChildAt(0).setVisibility(View.GONE); }
2.顯示年月,不顯示日:
if(datePicker != null){
((ViewGroup) datePicker.getChildAt(0)).getChildAt(2).setVisibility(View.GONE);
}
3.顯示年日,不顯示月:
if(datePicker != null){ ((ViewGroup) datePicker.getChildAt(0)).getChildAt(1).setVisibility(View.GONE); }
在4.0系統中DatePicker中view層次結構與2.2不同,多了一層:DatePicker包含了一個子view:LinearLayout.LinearLayout中包含了兩個子view:LinearLayout和CalendarView.子LiearLayout中包含了三個NumberPicker控制元件NumberPicker控制元件中包含了三個子控制元件:NumberPickerButton("+"號)\EditText\NumberPickerButton("-"號)。
這就造成上面的那段程式碼在4.0中是達不到目的,想要在4.0中也實現該功能需修改程式碼如下:
1.顯示月日,不顯示年:
if(datePicker != null){
((ViewGroup)((ViewGroup) datePicker.getChildAt(0)).getChildAt(0)).getChildAt(0).setVisibility(View.GONE);
}
2.顯示年月,不顯示日:
if(datePicker != null){
((ViewGroup)((ViewGroup) datePicker.getChildAt(0)).getChildAt(0)).getChildAt(2).setVisibility(View.GONE);
}
3.顯示年日,不顯示月:
if(datePicker != null){
((ViewGroup)((ViewGroup) datePicker.getChildAt(0)).getChildAt(0)).getChildAt(1).setVisibility(View.GONE);
}
岸上所述即可在原生的DatePicker上完成自己的需要。