zoukankan      html  css  js  c++  java
  • DatePicker隐藏年/月/日

    有时候项目中进行时间设置时,只需要设置年/或月/或日。这时候就需要对相应的部分进行隐藏。

    1 DatePicker datePk = (DatePicker) findViewById(R.id.dp_date);
    2 // 获取到年/月/日所在的组件群
    3 ViewGroup targetGroup = (ViewGroup) ((ViewGroup) datePk.getChildAt(0)).getChildAt(0);
    4 //接下来即可根据位置来隐藏年/月/日,如
    5 targetGroup.getChildAt(0); //隐藏年

    == === === = == === == = = = ===== = =
    后来发现,上面这个方法还是算比较不好的,因为有些手机年月日第顺序刚好与上面的相反。这就会导致本来打算隐藏年,而结果“日”却不见了。
    下面的稍微好些
     1 private void hideDay(DatePicker datePicker) {
     2         Field[] datePickerFields = datePicker.getClass().getDeclaredFields();
     3         for (Field field : datePickerFields) {
     4             // 其中mDaySpinner为DatePicker中为“日”定义的变量名
     5             if ("mDaySpinner".equals(field.getName())) {
     6                 field.setAccessible(true);
     7                 Object dayPicker = new Object();
     8                 try {
     9                     dayPicker = field.get(datePicker);
    10                 } catch (IllegalAccessException e) {
    11                     e.printStackTrace();
    12                 } catch (IllegalArgumentException e) {
    13                     e.printStackTrace();
    14                 }
    15                 ((View) dayPicker).setVisibility(View.GONE);
    16             }
    17         }
    18     }

     另外要注意到是,在4.0以前,DatePicker中控件的名字是mDayPicker/mMonthPicker/mYearPicker。在4.0之后才改成了mDayspinner/mMonthSpinner/mYearSpinner.

  • 相关阅读:
    如何安装vue-cli脚手架环境
    使用vw,vh对页面进行布局
    ParseChat聊天室应用项目源码
    不错的找茬游戏源码项目
    山寨山寨版手机安全卫士项目
    高仿精仿金山手机卫士源码项目完整版
    java斗地主游戏项目源码
    ios版塔防类游戏源码
    ios媒体视频播放器应用项目
    仿iphone动态萤火虫锁屏应用源码
  • 原文地址:https://www.cnblogs.com/ivan-aldrich/p/4227439.html
Copyright © 2011-2022 走看看