话不多说给需要的朋友先贴上解决方案。如果,愿意多听两句就继续看吧,知识比较浅,勿笑。
通过反射获取光标颜色,直接改掉。
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 变量,发现没有地方再被赋值了。
再搜索就没有找到有价值的东西,试试反射改一下。
版权声明:本文为qq_41346910原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。