2

我需要使用选择器更改按钮颜色(正常/按下)

res/color/test_color_button.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="@color/button_focused"/>
<item android:state_pressed="false" android:color="@color/button_font"/>
<item android:color="@color/button_font"/>
</selector>

在代码类 MyButton(它从类 Button 扩展)中,我使用以下代码设置文本颜色

 //at Constructor 
 this.setTextColor(getResources().getColor(R.color.text_color_button));

但我的问题是,按钮总是显示默认颜色

4

3 回答 3

2

你需要创建一个ColorStateList 对象

XmlResourceParser parser = getResources().getXml(R.color.test_color_button);
ColorStateList colorStateList = ColorStateList.createFromXml(getResources(), parser);
this.setTextColor(colorStateList);
于 2014-10-29T09:15:42.113 回答
1

尝试将选择器设置为背景,如下所示:

<Button
   android:id="@+id/button1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:background="@drawable/button_bg" />
于 2014-10-29T09:19:14.817 回答
0

为什么要改变颜色,让我们做一个全新的有吸引力的事情......我相信你会喜欢它

  1. 在您的可绘制文件夹中创建一个 xml 文件,命名button_bg.xml如下

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android" >
        <item android:drawable="@drawable/button_pressed" android:state_pressed="true" />
    
        <item android:drawable="@drawable/button" />
    
    </selector>
    

您要在按下按钮和按钮正常状态时显示的图像在哪里button_pressed以及是button

  1. 设置按钮的背景button_bg.xml如下

    <Button
       android:id="@+id/button1"
       android:layout_width="250dp"
       android:layout_height="70dp"
       android:layout_marginLeft="360dp"
       android:layout_marginTop="520dp"
       android:background="@drawable/button_bg"  <!--like this-->
       android:text="Login"
       android:textColor="#ffffff"
       android:textSize="30dp" />
    

享受!

于 2014-10-29T09:15:13.197 回答