用代码改变EditText 光标颜色

话不多说给需要的朋友先贴上解决方案。如果,愿意多听两句就继续看吧,知识比较浅,勿笑。

通过反射获取光标颜色,直接改掉。

public void setCursorDrawableRes(int res) {
        try {
            Field f = TextView.class.getDeclaredField("mCursorDrawableRes");
            f.setAccessible(true);
            f.set(你的EditText, res);  // 输入上你的EditText和shape文件
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

下面是简单分析:

大家都知道设置光标最简单的方式是在xml里面直接设置。如下

只需要这两步,但是项目需要代码动态修改。于是,我就百度了一会,没有找到。。。难受

开始分析:

既然是 textCursorDrawable 是设置光标的颜色的,就找它在那赋值了。

点击 AppCompatEditText 类搜索 textCursorDrawable 

没有,看父类 EditText 搜索,还是没有。继续子类搜索。找到相关的了

在类里搜索 mCursorDrawableRes 变量,发现没有地方再被赋值了。

再搜索就没有找到有价值的东西,试试反射改一下。结果成功了,不过改完,我试试了google结果找到了答案

附网址 https://segmentfault.com/a/1190000009507919

猜你喜欢

转载自blog.csdn.net/qq_41346910/article/details/101535673
今日推荐