2015-07-12 100 views
1

我想要一個按鈕在按下時更改顏色,然後在其釋放時更改回原來的顏色。目前我有一個按鈕,當你按下時,你會看到一個片段。我想簡單地按鈕的onClickListener使用不能僅在點擊時更改按鈕顏色(Android)

button.setBackgroundColor(Color.BLUE); 

,但意識到,當它把我帶到片段,我回到了活動,按鈕仍然是相同的顏色,也沒有改回來。所以我的行動計劃是當它按下時改變它的顏色,啓動片段,然後將按鈕的顏色設置爲原來的樣子,以便如果我按下按鈕看起來是正常的(未點擊)。

但是,我似乎無法找到一個在線示例,顯示我將按鈕的顏色作爲int(因此我可以使用setBackgroundColor(int))。有任何想法嗎?

任何幫助

回答

1

您應該爲此目的使用選擇高度感激 -

創建selector.xml(在res /繪製)文件夾:

<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" /> 
0

您不需要更改背景顏色,只需使用selector.create一個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" />