2012-05-06 10 views
6

Ich habe eine button in der layout erstellt. Im Drawable Ordner habe ich einen XML file namens btn01_state erstellt. Die btn01_state.xml zum button zugeordnet i erstellt durch „android:[email protected]/btn01_stateWie ändert man das Bild eines Knopfes mit jedem Klick?

Nun hat die button einen Standard image img1.when i click auf dem button, die image1 Änderungen img2, und sobald ich lassen Sie die Maustaste geklickt, die image2 wurde erneut zu img1 geändert.

was ich tun möchte ist, um das Bild der Schaltfläche mit jedem Klick zu ändern.

für ein Beispiel, zunächst btn01 hat IMG01

wenn btn01 ==> set img von btn01 img02 und halten img02 bis die btn01 erneut gedrückt wird gedrückt wird. Jetzt hat btn01 img02 drauf.

Wenn btn01 gedrückt wird, setzen Sie img01 auf btn01.

Ich hoffe, das geklärt mehr, was ich tun möchte.

btn_selector:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@drawable/android_blue" 
     android:state_pressed="true" /> 
<item android:drawable="@drawable/ic_launcher" 
     android:state_focused="true" /> 
<item android:drawable="@drawable/ic_launcher" /> 

main.xml

<Button 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:id="@+id/btn01" 
    android:background="@drawable/btn01_state"/> 

Antwort

17

Sie es im Code leicht tun können.

boolean isPressed = false; 
button.setOnClickListener(buttonListener); 

OnClickListener buttonListener = new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     if(isPressed) 
      button.setBackgroundResource(R.drawable.icon1); 
     else 
      button.setBackgroundResource(R.drawable.icon2); 

     isPressed = !isPressed; 
    } 
}; 
+0

perfekt ..... :) – Androelpha

+0

Funktioniert nicht mit mir. Es ruft nur onClick auf, wenn die Taste gedrückt wird, und nicht, wenn die Taste losgelassen wird. So macht es nur einen der Zweige bei jedem Klick. –

+0

@ZdravkoDonev - es ist, weil die OP gefragt, wie man Button-Bild mit Klicks ändern, nicht berührt. Wenn Sie den Status der Schaltfläche ändern möchten, sollten Sie diesen Link überprüfen - http://StackOverflow.com/a/14024007/1376688 –

0

es vielleicht in Code machen. Setzen Sie einen Listener auf die Schaltfläche und wenn Sie auf die Schaltfläche klicken, wird der Hintergrund geändert.

1

einfache Weise

btn.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
    btn.setBackgroundDrawable(getResources().getDrawable(R.drawable.locationbutton_on)); 
       } 
     });