按下时更改按钮背景

时间:2014-03-27 11:13:10

标签: android user-interface background

我想在点击按钮时更改按钮的背景。我试图使用选择器。但它没有用。这是选择器(add_grp_slctr.xml):

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

按钮:

       <Button
            android:id="@+id/addGrpBtn"
            android:layout_width="55dp"
            android:layout_height="45dp"
            android:layout_gravity="center"
            android:background="@drawable/add_grp_slctr"
            android:onClick="addGrpDialogOpen" />

add_grp_d和add_grp是图像(png)。

5 个答案:

答案 0 :(得分:2)

我尝试了一个类似的代码,默认情况下是白色,按下按钮时按下黑色:

// * * *这是btn_selector,它将在drawable文件夹中声明***

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
          android:drawable="@android:color/black" /> <!-- pressed -->
    <item android:drawable="@android:color/white" /> <!-- default -->
</selector>

并在button.xml上调用它 - &gt;

 android:background="@drawable/btn_selector"

希望这会有所帮助.. :)

答案 1 :(得分:1)

完成http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList一次。此外,当您使用硬件键盘聚焦按钮时,state_focussed仅用于按钮。 至于你的情况

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
     <item android:state_pressed="false" android:state_selected="false" android:drawable="@drawable/button_default"/>
     <item android:state_pressed="true" android:state_selected="false" android:drawable="@drawable/button_default" />
     <item android:state_pressed="false" android:state_selected="true" android:drawable="@drawable/button_selected"/>
     <item android:state_pressed="true" android:state_selected="true" android:drawable="@drawable/button_selected" />
     <item android:drawable="@drawable/button_selected" /> 
</selector>

答案 2 :(得分:0)

使用您的选择器

像这样更改您的代码

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

我的代码            

<item android:drawable="@drawable/shadow_design_click" android:state_pressed="true"/>
<item android:drawable="@drawable/shadow_design" android:state_focused="true"/>
<item android:drawable="@drawable/shadow_design"/>

</selector>

答案 3 :(得分:0)

我认为你应该稍微改变你的选择器。 请检查此答案 here

答案 4 :(得分:0)

如果您只想更改按钮的颜色,而不是传递cuastom XML文件,那么您可以尝试以下方式。

Button lineColorCode = (Button)findViewById(R.id.button1);

现在在按钮的点击事件中使用以下代码。

int color = Color.parseColor("#AE6118"); //The color u want             
lineColorCode.setColorFilter(color);