Android:点击更改字体颜色

15

我想改变按钮内文本的颜色。

例如,我有一个按钮,里面填充白色,文本是蓝色。当我点击按钮时,我希望这两种颜色交换(按钮内的文本变为白色,按钮变为蓝色)。

我尝试过类似以下代码:

 <item style="@style/ButtonText_Menue_Clicked" android:drawable="@drawable/button_menue_default" android:state_focused="true"></item>
 <item style="@style/ButtonText_Menue" android:drawable="@drawable/button_menue_default" ></item>

但实际上它什么也没做。 有没有办法做我想做的事情,或者我必须在onclick事件中做一些处理(但是那样会出现“单击消失时如何恢复颜色”的问题)


据我所知,你需要在onClick事件中完成这个操作。代码非常简单。 - zgc7009
我该如何将它改回来? - user3466562
而且,你还会遇到这样的问题,文字只有在你点击之后才会改变。但我想让按钮文本在我释放按钮之前更改(并且onclick是在释放按钮后调用的)。 - user3466562
你可以使用 ColorStateList 并将其设置为 textColor。 - panini
1
我以前没有使用过它。我会研究一下并检查它是否可以帮助我做我想要的事情 :) 谢谢你的回答 :) - user3466562
对不起,我误解了你要做什么,:P - zgc7009
1个回答

64
在 `res/color` 文件夹下创建一个名为 `selector` 的资源文件来定义文字颜色,同时在 `res/drawable` 文件夹下创建一个名为 `selector` 的按钮资源文件,内容如下:...
<selector
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_pressed="true"
        android:color="#800000" />
    <item
        android:state_pressed="false"
        android:color="#4C5" />
</selector>

按钮颜色.xml

<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_pressed="true">
        <shape android:shape="rectangle">
            <solid android:color="#4C5"/>
        </shape>
    </item>
    <item
        android:state_pressed="false">
        <shape android:shape="rectangle"  >
            <solid android:color="#800000"/>
        </shape>
    </item>
</selector>

把按钮添加到布局中

 <Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button"
    android:textColor="@color/text_color"
    android:background="@drawable/button_color"/>

太好了,这正是我正在寻找的东西,谢谢。 - user3466562
1
text_color.xml 是一个颜色状态列表资源,因此我认为将其放在color目录中比放在drawable目录中更好,因为将可绘制对象设置为textColor会令人困惑。 - YON

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