点击按钮后如何改变其颜色?

6

我创建了一个带有背景颜色的按钮,但是当我点击它时,它没有显示任何内容。
我需要在点击后在按钮上显示不同的颜色,因为用户需要知道按钮已被点击。
我不明白如何做到这一点?
请给我建议。
这是我的按钮代码。

<Button android:textSize="15px"
      android:id="@+id/button9" 
      android:gravity="center|bottom" 
      android:textColor="@color/myWhiteColor" 
      android:drawableTop="@drawable/math"
      android:text="@string/HomePage_Math" 
      android:background="@color/myMaroonColor" 
      android:layout_width="54dp" 
      android:layout_height="wrap_content" ></Button>

1
请使用选择器 http://developer.android.com/guide/topics/resources/color-list-resource.html。 - Padma Kumar
1
请使用http://developer.android.com/reference/android/content/res/ColorStateList.html。 - Aleks G
2个回答

11

//XML文件被保存在res/drawable/button_bg.xml:

<?xml version="1.0" encoding="utf-8"?>
<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 -->
</selector>

//这个布局XML将会为一个View应用颜色列表:

<Button android:textSize="15px"
      android:id="@+id/button9" 
      android:gravity="center|bottom" 
      android:textColor="@color/myWhiteColor" 
      android:drawableTop="@drawable/math"
      android:text="@string/HomePage_Math" 
      android:background="@drawable/button_bg" 
      android:layout_width="54dp" 
      android:layout_height="wrap_content" ></Button>

1
@SandipArmalPatil 如果您在button_bg xml中使用drawable而不是颜色代码,则不会出现“应用程序意外停止”的错误。 - Shaista Naaz
1
<item>标签需要一个'drawable'属性或定义drawable的子标签。这段代码将无法工作。 - Rajat Anantharam
@RajatAnantharam 是的,你需要尽快向谷歌报告 http://developer.android.com/guide/topics/resources/color-list-resource.html - Padma Kumar
android:color 不是 <selector> 中的有效命令。为了避免崩溃,我创建了一个 color.xml 文件在 values 目录下,并在其中定义颜色,如 <color name="gray">#808080</color>,然后在 button_bg.xml 中链接到该文件。 - pa1pal
@pa1pal,你可能忘记在<item>中添加内容了。请查看底部第三条评论。 - Padma Kumar
显示剩余4条评论

1
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@color/colorPrimaryDark" />
    <item android:state_focused="true" android:drawable="@android:color/holo_green_dark" />
    <item android:drawable="@color/colorCartButton" />
</selector>

这将有效。

为什么它会起作用?添加一些额外的细节,使其成为一个很好的答案。 - Phiter

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