Android DatePicker 显示问题 可分别隐藏年、月或日

来源:互联网 发布:淘宝drjart天猫旗舰店 编辑:程序博客网 时间:2024/06/05 10:03

 可分别隐藏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 blocke.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 年月



0 0
原创粉丝点击