如何在EditText框中更改焦点颜色(橙色)?该 对焦色是整个控制周围的小边缘,很明亮 控件具有焦点时为橙色。我怎样才能改变它的颜色 专注于不同的颜色? 任何人都可以帮我解决这个问题吗? 提前谢谢,
答案 0 :(得分:62)
您必须创建/修改自己的NinePatch图像以替换默认图像,并将其用作EditText的背景。如果您查看SDK文件夹,在您的平台下,然后res / drawable,您应该找到EditText焦点状态的NinePatch图像。如果您只想更改,只需将其拉入Photoshop或任何图像编辑软件,并将橙色更改为您选择的颜色。然后将其保存到drawable文件夹中,并构建一个新的StateListDrawable,例如下面的内容:
<强> edittext_modified_states.xml 强>
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android"
>
<item
android:state_pressed="true"
android:drawable="@android:drawable/edittext_pressed"
/> <!-- pressed -->
<item
android:state_focused="true"
android:drawable="@drawable/edittext_focused_blue"
/> <!-- focused -->
<item
android:drawable="@android:drawable/edittext_normal"
/> <!-- default -->
</selector>
我不知道EditText的默认NinePatches的实际名称,因此请根据需要替换它们,但这里的关键是只使用@android:drawable
图像作为未修改的图像(或者你可以将它们复制到你项目的可绘制文件夹中),然后使用你修改过的drawable来实现你的聚焦状态。
然后,您可以将此StateListDrawable设置为TextView的背景,如下所示:
<TextView
android:background="@drawable/edittext_modified_states"
答案 1 :(得分:0)
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android"
>
<item
android:state_pressed="true"
android:color="colorcode"
/> <!-- pressed -->
<item
android:state_focused="true"
android:color="colorcode"
/> <!-- focused -->
<item
android:color="colorcode"
/> <!-- default -->
</selector>
答案 2 :(得分:0)
您不需要创建xml drawables。代码可能更简单。 kotlin中的例子:
editText.onFocusChangeListener = OnFocusChangeListener { _, hasFocus ->
// colorLine, colorLineFocus is vars of ColorStateList
ViewCompat.setBackgroundTintList(editText, if (hasFocus) colorLineFocus else colorLine)
}