2014-07-15 104 views
0

我的應用中有一些透明背景的按鈕。現在,我想定製它們來保持透明背景,但是當它們被按下時,背景應該變成綠色。將按鈕背景從透明變爲彩色時按下

我知道這裏有很多關於自定義按鈕的主題,我收到了其中幾個主題,還有很多來自谷歌的教程。雖然這看起來很容易,但我沒有得到它的工作。

這是我的按鈕的示例代碼:

<Button 
    android:id="@+id/accept_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_vertical" 
    android:background="@drawable/button_state" 
    android:text="@string/btnaccept" 
    android:textStyle="bold" /> 

這是選擇XML文件buton_state.xml在那裏我已經定義了diferent按鈕狀態的背景顏色變化:

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

    <!-- Button focused and pressed--> 
    <item android:state_pressed="true" 
      android:state_focused="true" > 
     <shape> 
      <solid 
       android:color="@color/LightGreen" />  
     </shape> 
    </item> 

    <!-- Button Default--> 
    <item android:state_pressed="false" 
     android:state_focused="false" > 
     <shape> 
      <solid 
       android:color="@android:color/transparent" /> 
     </shape> 
    </item> 
</selector> 

這文件在res/drawable文件夾中。

在我的應用程序中,按鈕可以正確地獲得默認的透明背景,但是在聚焦或按下時,此背景顏色不會變爲綠色。

回答

2

嘗試這可能是幫助你,

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_pressed="true" android:drawable="@color/LightGreen" /> <!--pressed --> 
<item android:drawable="@android:color/transparent" /> <!-- Normal --> 
</selector> 
+0

我不知道爲什麼,但我嘗試了類似的方式,並沒有工作......但現在它工作。做得好! – masmic

0

使用選擇

<?xml version="1.0" encoding="utf-8"?> 

<item android:drawable="@drawable/numpad_button_bg_selected" android:state_selected="true"></item> 
<item android:drawable="@drawable/numpad_button_bg_pressed" android:state_pressed="true"></item> 
<item android:drawable="@drawable/numpad_button_bg_normal"></item> 

然後

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