所以,我已经搜索了很多,但是我找不到任何东西,如果这最终成了重复,我很抱歉,但是我想要编辑EditText的颜色' s用于移动光标的光标指针
我已经设法改变了光标的颜色,但它并没有影响指针,它似乎只响应了accentColor。
我很确定它是可能的,因为我记得看到一个应用程序执行了它,它有指针和对话框中的所有元素根据您选择的颜色改变颜色而不更改重音对话框下方视图的颜色。
请帮助:)
答案 0 :(得分:8)
您只能为此EditText创建自己的样式/主题并更改ColorAccent:
<style name="EditTextColorCustom" parent="@style/AppBaseTheme">
<!-- Customize your theme here. -->
<item name="colorAccent">@color/colorAccent</item>
</style>
答案 1 :(得分:5)
您可以通过在style.xml中创建新样式来完成此操作
<style name="CustomEditTextTheme" parent="TextAppearance.AppCompat">
<item name="colorAccent">@color/primary_dark_material_dark</item>
</style>
然后在EditText标签中使用此
style="@style/CustomEditTextTheme"
答案 2 :(得分:1)
您可以使用反射来设置selectHandle。
EditText包含具有mSelectHandleCenter字段的Editor类(如果需要选择使用mSelectHandleLeft和mSelectHandleRight)
private fun setCursorPointerColor(view: EditText, @ColorInt color: Int) {
try {
//get the pointer resource id
var field = TextView::class.java.getDeclaredField("mTextSelectHandleRes")
field.isAccessible = true
val drawableResId = field.getInt(view)
//get the editor
field = TextView::class.java.getDeclaredField("mEditor")
field.isAccessible = true
val editor = field.get(view)
//tint drawable
val drawable = ContextCompat.getDrawable(view.context, drawableResId)!!
drawable.setColorFilter(color, PorterDuff.Mode.SRC_IN)
//set the drawable
field = editor.javaClass.getDeclaredField("mSelectHandleCenter")
field.isAccessible = true
field.set(editor, drawable)
} catch (ex: Exception) {
}
}
答案 3 :(得分:0)
您可以使用textSelectHandle将其替换为您的drawable:
android:textSelectHandle="@drawable/your_drawble"
答案 4 :(得分:0)
您可以将colorControlActivated添加到样式的AppTheme中:
<item name="colorControlActivated">"Your_color"</item>