用代碼改變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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章