话不多说给需要的朋友先贴上解决方案。如果,愿意多听两句就继续看吧,知识比较浅,勿笑。
通过反射获取光标颜色,直接改掉。
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结果找到了答案