2013-05-27 136 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