2013-05-14 87 views
0

我有一些問題在用戶按下按鈕時將藍色添加到按鈕上。如果在這個按鈕的背景中沒有可繪製的圖標,它就可以工作,但在我的情況下,我必須添加自定義背景,並且當用戶單擊按鈕時我想要藍色。 這裏是我的代碼我的按鈕的Holo主題和自定義背景

<Button 
    android:id="@+id/create_profile" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/info_account" 
    android:layout_centerHorizontal="true" 
    android:background="@drawable/btn_create_profile" /> 

回答

1

藍色是不是該平臺吸引你。標準按鈕具有可作爲背景的可選擇的選擇器,其中涉及用於視圖的一組圖像。因此,對於按鈕,例如,它是一個標準的按鈕圖像,按下的按鈕圖像(上面繪製藍色覆蓋圖),禁用(半透明)等。 按鈕知道它是當前狀態並顯示適當的圖像。

所以,你想要做的就是給自己畫一個按下按鈕,創建一個選擇繪製這樣的:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:state_pressed="true" android:drawable="@drawable/your_pressed_button/> 
    <item android:drawable="@drawable/your_normal_button/> 

</selector> 

我認爲這是值得閱讀Drawable Resources。您還可以找到生成的按鈕狀態示例here

+0

所以我必須爲不同的狀態創建不同的drawables?有沒有簡單的方法告知用戶他正在點擊按鈕? – mrroboaat 2013-05-15 09:01:47

+0

不可以。我唯一能看到的是繼承Button組件,並在畫布上自己繪製藍色覆蓋圖。但我個人會避免這一點。 – EvilDuck 2013-05-15 09:19:03

+0

好的!我知道選擇器,但我所有的按鈕都有自定義drawable,因此對於每個按鈕我都必須創建xml文件。 – mrroboaat 2013-05-15 09:25:57

0

你應該使自定義繪製:

對於這一點,你必須只需在您繪製文件夾中創建一個XML文件,並寫入:

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

    <item android:state_pressed="false" 
     android:drawable="@drawable/ic_back" /> 

    <item android:state_pressed="true" 
     android:drawable="@drawable/ic_back_pressed" /> 

    <item android:state_focused="true" 
     android:drawable="@drawable/ic_back_pressed" /> 

</selector> 

,現在設置這個可繪製在您的按鈕的背景。

在這裏,在正常狀態下的背景ID ic_back 壓縮並專注狀態背景ic_back_pressed

爲了創建固體形狀繪製(例如,如果你想純色底色爲繪製你可以去here ..)