話不多說給需要的朋友先貼上解決方案。如果,願意多聽兩句就繼續看吧,知識比較淺,勿笑。
通過反射獲取光標顏色,直接改掉。
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