可分別隱藏DatePicker中年、月、日:
final DatePicker datePicker = (DatePicker) onTouchView
.findViewById(R.id.date_picker);
if (datePicker != null) {
try {
Field f[] = datePicker.getClass().getDeclaredFields();
//隱藏年份
for (Field field : f) {
if (field.getName().equals("mYearPicker")
|| field.getName().equals("mYearSpinner")) {
field.setAccessible(true);
Object yearPicker = new Object();
yearPicker = field.get(datePicker);
((View) yearPicker).setVisibility(View.GONE);
}
}
// 隱藏月份
for (Field field : f) {
if (field.getName().equals("mMonthPicker")
|| field.getName().equals("mMonthSpinner")) {
field.setAccessible(true);
Object monthPicker = new Object();
monthPicker = field.get(datePicker);
((View) monthPicker).setVisibility(View.GONE);
}
}
//隱藏日
for (Field field : f) {
if (field.getName().equals("mDayPicker")
|| field.getName().equals("mDaySpinner")) {
field.setAccessible(true);
Object dayPicker = new Object();
dayPicker = field.get(datePicker);
((View) dayPicker).setVisibility(View.GONE);
}
}
} catch (SecurityException e) {
Log.e("ERROR", e.getMessage());
} catch (IllegalArgumentException e) {
Log.e("ERROR", e.getMessage());
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
例如要隱藏年份,只需加入以下代碼:
// 隱藏年份
for (Field field : f) {
if (field.getName().equals("mYearPicker")
|| field.getName().equals("mYearSpinner")) {
field.setAccessible(true);
Object yearPicker = new Object();
yearPicker = field.get(datePicker);
((View) yearPicker).setVisibility(View.GONE);
}
還有一種方式,不過與日期顯示格式有關,故不推薦使用,方法如下:
((LinearLayout) ((ViewGroup)
datePicker.getChildAt(0)).getChildAt(0)).getChildAt(0).setVisibility(View.GONE);
//0 0 0 月日
//0 0 1 年日
//0 0 2 年月