欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > Android 如何通过代码实时设置EditTextView光标

Android 如何通过代码实时设置EditTextView光标

2025/9/23 18:14:10 来源:https://blog.csdn.net/chengzhenjia/article/details/140135143  浏览:    关键词:Android 如何通过代码实时设置EditTextView光标

背景:换肤框架下,QA进行深色浅色切换说输入框光标颜色没有改变,转UI结果UI说需要修改!!!!!

本来有方法可以设置,但是 设置后未生效。重新进入该页面才生效!!!!

mView.setTextCursorDrawable(drawable);

查看内部方法:

通过Editor的loadCursorDrawable方法得知,此前已经有光标背景了则不会进行重新设置了,所以就算你实时通过代码方法setTextCursorDrawable设置了新的,mDrawableForCursor由于之前不为null所以不会重新设置,所以不会生效。

即 mDrawableForCursor = mTextView.getTextCursorDrawable(); 方法不会执行

通过查资料发现只能用反射实现,于是就有了下面代码 

Drawable drawable = SkinCompatVectorResources.getDrawableCompat(mView.getContext(), mTextCursorDrawable);try {// Get the editorField fieldP  = TextView.class.getDeclaredField("mEditor");fieldP.setAccessible(true);Object editorP = fieldP.get(mView);// Set the drawablesfieldP = editorP.getClass().getDeclaredField("mDrawableForCursor");fieldP.setAccessible(true);fieldP.set(editorP, drawable);} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}

运行后,成功实时设置光标颜色了!!!!!!!!!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词