我想要一个按钮在按下时改变颜色,然后在释放时改回原来的颜色。目前我有一个按钮,可以在按下时将您带到片段。我试过简单地使用
button.setBackgroundColor(Color.BLUE);
在按钮的onClickListener中但是意识到当它带我到片段并且我返回到活动时,按钮仍然是相同的颜色并且没有改变回来。因此,我的行动计划是在按下时更改它的颜色,启动片段,然后将按钮的颜色设置为原来的颜色,这样如果我按下按钮似乎是正常的(未点击)。
但是,我似乎无法在网上找到一个示例,它显示我将按钮的颜色作为int(因此我可以使用setBackgroundColor(int))。有什么想法吗?
非常感谢任何帮助
答案 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" />