根据焦点更改 Android 编辑框中的文本颜色

3
我正在使用以下xml文件来更改editbox的颜色。但我想知道如何根据焦点更改editbox中的文本颜色。如果editbox被聚焦,我想将文本颜色更改为黑色,当它没有聚焦时,我想将颜色更改为白色。
请问如何在xml文件中实现这一点?任何帮助都对我学习Android可绘制资源非常有用。
 <?xml version="1.0" encoding="UTF-8"?>
 <selector
     xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true">
    <shape>
        <gradient
            android:endColor="#FFFFFF"
            android:startColor="#FFFFFF"
            android:angle="90" />
        <stroke
            android:width="3dp"
            android:color="#0f0f0f" />
        <corners
            android:radius="10dp" />
    </shape>
</item>

<item android:state_focused="false">        
    <shape>
        <gradient
            android:endColor="#000000"
            android:startColor="#000000"
            android:angle="90" />
        <stroke
            android:width="3dp"
            android:color="#151515" />
        <corners
            android:radius="10dp" />
    </shape>
</item>


对不起,XML文件没有正确复制。 - Ron
2个回答

3

你应该使用ColorStateList而不是状态列表。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="#ffff0000" /> <!-- pressed -->
<item android:state_focused="true" android:color="#ff0000ff" /> <!-- focused -->
<item android:color="#ff000000" /> <!-- default -->

然后将这个状态列表分配给textColor属性。


谢谢!我已经成功修改了文本颜色。在将状态列表分配给textColor属性后。 - Ron

0

1
嗨,Gary,是的,我正在寻找用于更改编辑文本颜色的状态列表。我尝试在item标签内使用android:textColor,但我没有得到我期望的结果。 - Ron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接