2013-05-27 168 views
1

我有image button,我想在按下時更改按鈕的顏色。首先我用transparent作爲默認狀態顏色顯示它,如下所示。但按下時不顯示突出顯示。所以我決定使用其他顏色突出顯示按下時使用狀態drawable。但是如何通過風格明智地保持背景顏色。默認情況下,它應該是透明的,按下時必須顯示其他顏色。通過樣式更改背景顏色

本次代碼:

<ImageButton 
     android:id="@+id/imgbutton" 
      android:layout_width="20dp" 
      android:layout_height="match_parent" 
      android:layout_gravity="center" 
      android:src="@drawable/ic_launcher" 
      android:background="@android:color/transparent" 
     /> 

需要進行編碼:

<ImageButton 
     android:id="@+id/imgbutton" 
      android:layout_width="20dp" 
      android:layout_height="match_parent" 
      android:layout_gravity="center" 
      android:src="@drawable/ic_launcher" 
      android:background="@drawable/btnselector" 
     /> 

那麼應該是什麼btnselector.xml在這裏?

回答

1

把它裏面res/color

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

<item android:state_pressed="true" android:color="@color/green_text_color"/> <!-- pressed --> 
<item android:state_focused="true" android:color="@color/green_text_color"/> <!-- focused --> 
<item android:color="@android:color/white"/> <!-- default --> 

</selector> 

創建一個新的形狀,內部RES /抽拉

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle"> 
    <solid android:color="@color/yourxmlfile" /> 
</shape> 

並把它作爲背景

res/drawable選擇

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
     <item android:drawable="@drawable/green_botton_pressed" 
      android:state_pressed="true" /> 
    <item android:drawable="@drawable/green_botton_highlited" 
      android:state_focused="true" /> 
    <item android:drawable="@drawable/green_botton" /> 

</selector> 
+0

由於item標籤需要可繪製屬性,所以會引發錯誤。這就是我發佈這個問題的原因。因爲在每個例子中,我發現只能繪製,但不是這樣。 – Spike

+0

對不起,我應該提到我把它放在res/color文件夾中。你想要可繪製的顏色深度? – Blackbelt

+0

如果我把這個res/color文件夾。如何使用android:background引用該文件? – Spike