用户点击并释放按钮时如何更改android按钮的颜色

时间:2014-06-20 06:54:52

标签: android

你好,我是android的新开发者,也是新开发者。我想在用户点击时更改按钮的颜色,并在用户释放时重置颜色。请告诉我,我该怎么做? 这是我用作按钮`背景的布局文件

<solid android:color="@android:color/transparent"/>
<stroke android:width="2dp" android:color="#FFFFFF"/>
<corners android:bottomRightRadius="16dp"
  android:bottomLeftRadius="16dp"
  android:topLeftRadius="16dp"
  android:topRightRadius="16dp"/>

`

4 个答案:

答案 0 :(得分:3)

使用按下状态下所需的颜色制作另一个可绘制的。并制作一个可绘制的:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:drawable="@drawable/btn_pressed" android:state_pressed="true"></item>
<item android:drawable="@drawable/btn_pressed" android:state_focused="true"></item>
<item android:drawable="@drawable/btn_normal"></item>

使用btn_pressed作为按下状态drawable和btn_normal作为普通drawable。

答案 1 :(得分:1)

您应该使用选择器来实现此功能,并将它们设置为按钮的backgorund,如:

 <Button
    android:background:"@drawable/ button_bg"/>

在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:drawable="@color/red"/> <!-- pressed -->
     <item android:state_focused="true" android:drawable="@color/blue"/> <!-- focused -->
     <item android:drawable="@color/black"/> <!-- default -->
  </selector>

在res / values文件夹中创建colors.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="black">#000</color>
    <color name="blue">#00f</color>
    <color name="red">#f00</color>
</resources>

你也可以使用图像代替可绘制文件夹中的颜色

答案 2 :(得分:0)

您只需在布局文件中设置按钮选择器。

<Button
 android:id="@+id/button1"
 android:background="@drawable/selector_xml_name"
 android:layout_width="200dp"
 android:layout_height="126dp"
 android:text="Hello" />

以下是drawable目录中的button_effect.xml文件

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

</selector>

答案 3 :(得分:0)

使用选择器:

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