给EditText设置光标颜色

时间:2022-05-04 08:55:12

其实对于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>