2011-04-04 128 views
5

我爲我的按鈕的背景製作了一個自定義9貼圖片。按鈕位於drawable-hdpi和drawable-mdpi文件夾中。我爲我的按鈕狀態創建了自定義選擇器文件。爲什麼我的自定義按鈕狀態不起作用?

選擇文件login_button.xml:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- Image display in background in select state --> 
    <item android:state_pressed="true" android:drawable="@drawable/login_button_down" /> 

    <!-- Image display in background in select state --> 
    <item android:state_focused="true" android:drawable="@drawable/login_button_down" /> 

    <!-- Default state --> 
    <item android:drawable="@drawable/login_button" /> 
</selector> 

然後,我做出的按鈕樣式定製styles.xml文件:

<style name="login_button_style" parent="@android:style/Widget.Button"> 
     <item name="android:gravity">center_vertical|center_horizontal</item> 
     <item name="android:textColor">#FF000000</item> 
     <item name="android:shadowColor">#FFFFFFFF</item> 
     <item name="android:shadowDx">0</item> 
     <item name="android:shadowDy">1</item> 
     <item name="android:shadowRadius">0.2</item> 
     <item name="android:textSize">13dp</item> 
     <item name="android:textStyle">bold</item> 
     <item name="android:background">@drawable/login_button</item> 
     <item name="android:focusable">true</item> 
     <item name="android:clickable">true</item> 
    </style> 

然後在應用的themes.xml這種風格我的主題文件

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="customTheme" parent="@android:style/Theme.NoTitleBar" > 
     <item name="android:editTextStyle">@style/login_edittext_style</item> 
     <item name="android:buttonStyle">@style/login_button_style</item> 
     <item name="android:textViewStyle">@style/login_textview_style</item> 
    </style> 
</resources> 

最後將按鈕本身添加到佈局文件中:

<Button 
    android:text="@string/login_text" 
    android:id="@+id/buttonSignIn" 
    android:layout_width="130dp" 
    android:layout_height="wrap_content"> 
</Button> 

但是,如果我點擊按鈕,那麼背景圖像不會改變。代碼是好的,所有編譯都很好。我知道我對於兩種不同的狀態有相同的圖像,但即使對於模擬器中的一個狀態它也不起作用。任何人都可以指出我的問題在哪裏?

編輯:

顯然正常狀態下工作,因爲它得到它從選擇XML文件中的圖像。現在我想知道爲什麼其他州不是...

+0

如果將'login_button'爲'機器人:background'操作呢? – Macarse 2011-04-04 20:12:27

+0

@Macarse No.添加到按鈕android:background =「@ drawable/login_button」,甚至嘗試在themes.xml中註釋掉按鈕樣式 - 結果爲0. – evilone 2011-04-04 20:18:45

+0

這是一種風格還是主題?你如何將它應用到你的按鈕或你的活動? – 2011-04-04 20:46:59

回答

5

我想也許是命名,所以我命名按鈕狀態圖像名稱不同於login_button,因爲選擇器xml文件具有相同的名稱。我也編輯了我的選擇器xml文件。

選擇XML文件:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- Image display in background in select state --> 
    <item android:state_pressed="true" android:drawable="@drawable/login_btn_down" /> 

    <!-- Image display in background in select state --> 
    <item android:state_focused="true" android:drawable="@drawable/login_btn_down" /> 

    <!-- Default state --> 
    <item android:drawable="@drawable/login_btn" />  
</selector> 
相關問題