安卓TimePicker,DatePicker日期选择器隐藏分钟或者小时,年月日?

隐藏TimePicker和DatePicker组件
本文提供了一种方法来隐藏Android中的TimePicker和DatePicker组件的特定部分,例如隐藏天数选择器。通过反射机制获取并修改系统内部字段,实现自定义时间选择器的显示效果。

当时找个很多的代码,都没有找到一个好的方法,这里直接上代码:

注意的是,,先把全部的时间显示出来再说:

大概写了两个,其他的大同小异:

private void hidDay(TimePicker timePicker2) {

Field[] datePickerfFields =timePicker2.getClass().getDeclaredFields();

       for (Field datePickerField :datePickerfFields) {

          if ("mMinuteSpinner".equals(datePickerField.getName())) {

//这里这个变量是系统的定义的变量,不是自己定义的​,点击时间源码进去就可以看到很多定义的属性,这个就是分钟属性,控制这个就可以了

             datePickerField.setAccessible(true);

              ObjectdayPicker = new Object();

              try{

                 dayPicker =datePickerField.get(timePicker2);

              } catch(IllegalAccessException e) {

                e.printStackTrace();

              } catch(IllegalArgumentException e) {

                e.printStackTrace();

             }

              //datePicker.getCalendarView().setVisibility(View.GONE);

              ((View)dayPicker).setVisibility(View.GONE);

          }

       }

}

    private void hidDay(DatePicker mDatePicker){

        Field[]datePickerfFields =mDatePicker.getClass().getDeclaredFields();

        for (FielddatePickerField : datePickerfFields) {

           if ("mDaySpinner".equals(datePickerField.getName())) {

//这里这个变量是系统的定义的变量,不是自己定义的​

              datePickerField.setAccessible(true);

              Object dayPicker = new Object();

              try {

                  dayPicker =datePickerField.get(mDatePicker);

              } catch (IllegalAccessException e) {

                 e.printStackTrace();

              } catch (IllegalArgumentException e) {

                 e.printStackTrace();

              }

              //datePicker.getCalendarView().setVisibility(View.GONE);

              ((View)dayPicker).setVisibility(View.GONE);

           }

       }

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值