在實(shí)際開(kāi)發(fā)過(guò)程中,會(huì)有對(duì)輸入框光標(biāo)屬性(大小,顏色)進(jìn)行修改的需求,系統(tǒng)給我們提供了屬性android:textCursorDrawable以便修改,但對(duì)于自定義rom的系統(tǒng),如華為mate s,小米等部分機(jī)型并不支持,設(shè)置失效,此時(shí),需要通過(guò)反射方式來(lái)更改cursor的值達(dá)到修改輸入框光標(biāo)屬性需求。具體代碼如下:
int drawable = typedArray.getResourceId(R.styleable.MyCursorEditText_textCursorDrawable, 0);
if (drawable !=0) {
Field setCursor = TextView.class.getDeclaredField("mCursorDrawableRes");
? ? setCursor.setAccessible(true);
? ? setCursor.set(this, drawable);
}
通過(guò)獲取自定義屬性光標(biāo)背景屬性shape文件,通過(guò)反射方式將值設(shè)進(jìn)去就可以了。shape示例文件如下:
<shape xmlns:android="http://schemas.android.com/apk/res/android">
? ? <size android:width="1dp" />
? ? <solid android:color="#fff" />
</shape>
? ?
? ?
? ?
? ?
? ?
? ?
? ?