其实对于EditText设置光标颜色很简单,通过反射找到 mCursorDrawableRes属性在改变
public static void setCursorDrable(EditText editText, int color) { if (editText == null) { return; } try { Field mCursorDrawableRes = TextView.class.getDeclaredField("mCursorDrawableRes"); mCursorDrawableRes.setAccessible(true); mCursorDrawableRes.setInt(editText, color); } catch (Exception e) { Logger.e(TAG, e); } }
这个int类型的color并不是十六进制的颜色值 而是xml文件
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<size android:width="1dp" />
<solid android:color="@color/primary" />
</shape>