点击时无法使按钮改变颜色(Android)

时间:2015-07-12 20:21:02

标签: android android-fragments android-button

我想要一个按钮在按下时改变颜色,然后在释放时改回原来的颜色。目前我有一个按钮,可以在按下时将您带到片段。我试过简单地使用

button.setBackgroundColor(Color.BLUE);

在按钮的onClickListener中但是意识到当它带我到片段并且我返回到活动时,按钮仍然是相同的颜色并且没有改变回来。因此,我的行动计划是在按下时更改它的颜色,启动片段,然后将按钮的颜色设置为原来的颜色,这样如果我按下按钮似乎是正常的(未点击)。

但是,我似乎无法在网上找到一个示例,它显示我将按钮的颜色作为int(因此我可以使用setBackgroundColor(int))。有什么想法吗?

非常感谢任何帮助

2 个答案:

答案 0 :(得分:1)

您应该为此目的使用选择器 -

创建selector.xml(在res / drawable中)文件夹:

<item android:drawable="@color/button_bg_selected" android:state_selected="true"></item>
<item android:drawable="@color/button_bg_pressed" android:state_pressed="true"></item>
<item android:drawable="@color/button_bg_normal"></item>

`

并将选择器设置为按钮的背景:

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

答案 1 :(得分:0)

你不需要改变背景颜色,只需使用一个选择器。在drawable文件夹中创建一个xml文件(给它一个名字,即colour_change)。选择器有几种状态。就像在下面的代码中一样,第一部分(默认)显示没有按下按钮和焦点,这将是颜色。第二部分显示按钮是焦点而不是按下,而第三部分显示按钮同时按下和聚焦。 按下按钮时,它会变为颜色,指定它被重新发布的时刻,它会返回到默认的颜色状态。

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


 <!-- default -->
<item android:state_pressed="false" android:state_focused="false">
    <shape >
        <solid  android:color="#CD853F" />
     </shape>
</item>

<!-- button focused -->
<item android:state_pressed="false" android:state_focused="true">
    <shape >
    <solid
            android:color="#00ff00" />
     </shape>
</item>
<!-- button pressed -->
<item android:state_pressed="true" android:state_focused="false">
    <shape >
        <solid
            android:color="#00ff00" />
    </shape>
</item> 

按钮的XML是

<Button
android:id="@+id/press_button"
android:background="@drawable/selector"
android:layout_width="fiil_parent"
android:layout_height="42dp"
android:text="Press me" />