2016-05-19 1 views
1

Ich wollte die Android-Schaltfläche Farbe jedes Mal ändern, wenn ich auf eine Schaltfläche klicke. Sobald ein Benutzer auf eine Schaltfläche klickt, möchte ich, dass sich die Farbe ändert. Wenn die Taste erneut gedrückt wird, wird die Farbe wieder auf den vorherigen Wert zurückgesetzt. Hier ist mein Versuch:Wie ändert man die Farbe der Android-Taste onClick?

private void setupFollowButton(Button button, final Boolean isClicked) { 
    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      Boolean isClickedDummy = !isClicked; 
      if(isClickedDummy) { 
       v.setBackgroundColor(Color.parseColor("#FF0000")); 
      } else { 
       v.setBackgroundColor(Color.parseColor("#FFFFFF")); 
      } 
     } 
    }); 
} 

Ursprünglich wollte ich es so, dass isClicked = !isClicked, so dass ich sicher wissen würde, dass die isClicked Variable geändert hat, und ich kann die Farbe ändern. Die Methode, die ich oben habe, ändert jedoch nur die isClicked zu false und ich kann nicht scheinen, es wieder zu true zu ändern. Kann ich das irgendwie herausfinden? Jede Hilfe wäre willkommen. Vielen Dank!

+0

Ich denke, es nimmt immer den Standardwert von isClicked, wenn Sie auf die Schaltfläche – Dhiraj

+0

klicken, also jedes Mal, wenn Sie nur einen Wert von isClicked bekommen – Dhiraj

Antwort

0

versuchen Sie dies:

isClicked = false; 

    private void setupFollowButton(Button button, final Boolean isClicked) { 
      button.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
        if(isClicked) { 
         v.setBackgroundColor(Color.parseColor("#FF0000")); 
         isClicked = false; 
        } else { 
         v.setBackgroundColor(Color.parseColor("#FFFFFF")); 
         isClicked = true; 
        } 
       } 
      }); 
     } 
0

Sie haben den Wert von „isClickedDummy“ zu ändern, und Sie haben es als global zu verwenden.

Boolean isClickedDummy; // global after the declaration of your class 

isClickedDummy = true; // in your onCreate() 

private void setupFollowButton(Button button, final Boolean isClicked) { 
    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      if(isClickedDummy) { 
       v.setBackgroundColor(Color.parseColor("#FF0000")); 
       isClickedDummy = false; 
      } else { 
       v.setBackgroundColor(Color.parseColor("#FFFFFF")); 
       isClickedDummy = true; 
      } 
     } 
    }); 
} 
1

können Sie ziehbar xml:

<Button 
    android:id="@+id/button1" 
    android:background="@drawable/selector_xml_name" 
    android:layout_width="200dp" 
    android:layout_height="126dp" 
    android:text="Hello" /> 

selector_xml_name.xml

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

    <item android:drawable="@drawable/numpad_button_bg_selected" android:state_selected="true"></item> 
    <item android:drawable="@drawable/numpad_button_bg_pressed" android:state_pressed="true"></item> 
    <item android:drawable="@drawable/numpad_button_bg_normal"></item> 

</selector 
0

nicht BackgroundResource Ihrer Taste entfernen Vergessen Sie, wenn Sie die Hintergrundfarbe ändern möchten.

Das heißt, verwenden:

btn.setBackgroundResource(0);

Danach wird 'üblichen Tasten-Layout' wird verschwinden, und ich werde die Änderungen der setBackground Methode zeigen.

Verwandte Themen