zoukankan      html  css  js  c++  java
  • Android 通过反射获取DatePicker 中的控件,并改变其颜色

    到最后也只是成功改变了中间部分的颜色。

       private void setDatePickerDividerColor(DatePicker datePicker) {
            // Divider changing:
    
            // 获取 mSpinners
            LinearLayout llFirst = (LinearLayout) datePicker.getChildAt(0);
    
            // 获取 NumberPicker
            LinearLayout mSpinners = (LinearLayout) llFirst.getChildAt(0);
            for (int i = 0; i < mSpinners.getChildCount(); i++) {
                NumberPicker picker = (NumberPicker) mSpinners.getChildAt(i);
    
                Field[] pickerFields = NumberPicker.class.getDeclaredFields();
                for (Field pf : pickerFields) {
                    pf.setAccessible(true);
                    String pfString = pf.getName();
                    try {
                        if (pfString.equals("mSelectionDivider")) {
                            pf.set(picker, new ColorDrawable(Color.parseColor("#ffffff")));//设置分割线颜色
                            break;
                        } else if (pfString.equals("mInputText")) {
                            EditText mInputText = (EditText) pf.get(picker);//获得该属性对应的对象
                            mInputText.setTextColor(view.getResources().getColor(R.color.white));
                            break;
                        } else if (pfString.equals("mSelectorWheelPaint")) {
                            Paint mPaint = (Paint) pf.get(picker);//获得该属性对应的对象
                            mPaint.setColor(view.getResources().getColor(R.color.white));
                            break;
                        } else if (pfString.equals("mVirtualButtonPressedDrawable")) {
                            pf.set(picker, new ColorDrawable(Color.parseColor("#ffffff")));
                            break;
                        }
                    } catch (IllegalArgumentException e) {
                        e.printStackTrace();
                    } catch (Resources.NotFoundException e) {
                        e.printStackTrace();
                    } catch (IllegalAccessException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
  • 相关阅读:
    ecplise maven springmvc工程搭建
    【转载】钩子函数与回调函数
    【转载】Vue项目中的文件/文件夹命名规范
    联想本win10 virtualbox 安装centos
    【vue】router-link 与 router-view
    【vue】import的使用
    【vue】父组件主动调用子组件 /// 非父子组件传值
    【vue】vue组件的自定义事件
    修改MongoDB密码
    用du查看文件详情
  • 原文地址:https://www.cnblogs.com/lipeineng/p/7903047.html
Copyright © 2011-2022 走看看