Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set image button backgroundimage for different state?

I want imagebutton with two states i) normal ii) touch(or click).

I have set normal image in the imagebutton background and I am trying to change image(pressed) from onclick method, but it doesn't change.

I want that if I pressed image button then image should change from normal to pressed until I press other button but it doesn't happen.

Can anyone suggest to me how can I do this with selector or at run time?

Here is my imagebuttonpanel code.

<?xml version="1.0" encoding="utf-8"?> <LinearLayout   xmlns:android="http://schemas.android.com/apk/res/android"   android:layout_width="fill_parent"   android:layout_height="fill_parent"   android:orientation="horizontal"   android:gravity="bottom"   android:id="@+id/buttonpanel">   <ImageButton android:id="@+id/buttonhome"                android:layout_width="80dp"                android:layout_height="36dp"                android:focusable="true"                 android:background="@drawable/homeselector">                </ImageButton>   <ImageButton android:id="@+id/buttonsearch"                android:layout_height="36dp"                android:layout_width="80dp"                android:background="@drawable/searchselector"                android:focusable="true">                </ImageButton>>   <ImageButton android:id="@+id/buttonreg"                android:layout_height="36dp"                android:layout_width="80dp"                android:background="@drawable/registerselector"                android:focusable="true">                </ImageButton>>   <ImageButton android:id="@+id/buttonlogin"                android:layout_height="36dp"                android:layout_width="80dp"                android:background="@drawable/loginselector"                android:focusable="true">                </ImageButton> </LinearLayout> 

and my selector xml is

<?xml version="1.0" encoding="UTF-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android">     <!--<item android:state_pressed="true" android:drawable="@drawable/homehover"          /> <item android:state_focused="true" android:drawable="@drawable/homehover"          /> <item android:drawable="@drawable/home" /> <item android:state_window_focused="true"          android:drawable="@drawable/homehover" /> -->     <item android:state_enabled="false" android:drawable="@drawable/homehover" />     <item android:state_pressed="true" android:state_enabled="true"         android:drawable="@drawable/homehover" />     <item android:state_focused="true" android:state_enabled="true"         android:drawable="@drawable/homehover" />     <item android:state_enabled="true" android:drawable="@drawable/home" />  </selector>  

And I have also tried to change image resource on ontouch and onclick event, but it does not help.

like image 644
Hitendra Avatar asked Jan 21 '11 06:01

Hitendra


1 Answers

Create an xml file in your drawable like this :

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android">     <item         android:state_enabled="false"         android:drawable="@drawable/btn_sendemail_disable" />     <item         android:state_pressed="true"         android:state_enabled="true"         android:drawable="@drawable/btn_send_email_click" />     <item         android:state_focused="true"         android:state_enabled="true"         android:drawable="@drawable/btn_sendemail_roll" />     <item         android:state_enabled="true"         android:drawable="@drawable/btn_sendemail" /> </selector> 

And set images accordingly and then set this xml as background of your imageButton.

like image 141
ingsaurabh Avatar answered Oct 12 '22 02:10

ingsaurabh