zoukankan      html  css  js  c++  java
  • 华为手机Edittext光标(cursor)颜色修改

    华为手机的emui系统经常让人发出“可以可以,这很华为”的感叹

    这两天在edittext部分也发生了这样的事情

    正常edittext光标的颜色和宽度都说可以修改的,只需要通过xml中的 textCursorDrawable 属性就可以实现

    但是到了华为手机上就直接会被系统默认一种很丑的光标风格覆盖

    正常的方法都不管用,于是翻源码看到edittext的父类textview中的“mCursorDrawableRes”域是负责从xml文件中获取你通过 textCursorDrawable 设置的光标drawable

    于是尝试简单粗暴地使用反射的方式对其进行修改,如下:

    public class HWEditText extends EditText {
    
        public HWEditText(Context context) {
            this(context,null);
        }
    
        public HWEditText(Context context, AttributeSet attrs) {
            super(context, attrs);
            modifyCursorDrawable(context,attrs);
        }
    
        public HWEditText(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
            modifyCursorDrawable(context,attrs);
        }
    
        private void modifyCursorDrawable(Context context, AttributeSet attrs){
            TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.HWEditText);
            int drawable = a.getResourceId(R.styleable.HWEditText_textCursorDrawable,0);
            if(drawable != 0) {
                try {
    
                    Field setCursor = TextView.class.getDeclaredField("mCursorDrawableRes");
                    setCursor.setAccessible(true);
                    setCursor.set(this, drawable);
    
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                } catch (NoSuchFieldException e) {
                    e.printStackTrace();
                }
            }
            a.recycle();
        }
    }

    run一下发现此方法奏效 

    之后把这个类改成了适配增强类,同时给了一个自定义属性,可以在xml定义一个同名自定义属性对cursor进行修改,另外再把其他手机适配的几个小问题加进去了

  • 相关阅读:
    标题
    Ubuntu配置 PPTP 服务器端
    网络虚拟化问题小记
    DevStack部署Openstack环境
    Ubuntu LVM扩展LV
    Gnocchi+Aodh服务简析
    部署Ceilometer +Gnocchi + Aodh
    Runing MAC on KVM 问题小记
    处理 Ceilometer UPD 丢包
    TC limit bandwidth
  • 原文地址:https://www.cnblogs.com/bellkosmos/p/5779759.html
Copyright © 2011-2022 走看看