2011-11-16 7 views
18

Ho un po 'di Buttons sulla mia app Android. Hanno un'icona e un testo. Posso impostare il colore di sfondo di un Button in codice java. Se si fa clic sul pulsante, voglio visualizzarlo con un colore diverso. Quindi, come posso impostare un colore diverso per lo stato premuto di Button?Come si imposta un colore diverso per lo stato premuto del pulsante?

<Button 
    android:id="@+id/save" 
    android:layout_width="130dip" 
    android:layout_height="wrap_content" 
    android:scaleType="center" 
    android:drawableTop="@drawable/save" 
    android:text="Save" 
    android:textColor="#FFFFFF" 
    android:textSize="14dip" 
> 

Il metodo onCreate:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.homescreen); 
save = (Button)findViewById(R.id.save); 
    save.setBackgroundColor(Color.rgb(27,161,226)); } 
+0

http://stackoverflow.com/questions/4755871/how-to-set-image-button-backgroundimage-for-different-state/4755934#4755934 – ingsaurabh

risposta

39

creare file XML utilizzando l'immagine pulsante mi piace questo con mybutton.xml nella cartella 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="@color/greencolor" /> 
    <item android:state_focused="true" android:drawable="@color/yellowcolor" /> 
    <item android:drawable="@color/redcolor" /> 
</selector> 

e utilizzare questo in tasto di codice XML

android:background="@drawable/mybutton" 

aggiungi quei codici colore nel res ource -> Valori -> colors.xml come questo

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="blue">#0066cc</color> 
    <color name="gold">#e6b121</color> 
</resources> 

Riferimento: Change button background on touch

+0

Grazie per la risposta, ma non ho usato un'immagine per pulsante. Voglio impostare il colore di sfondo del pulsante quando viene premuto – realuser

+0

possiamo cambiare il colore del pulsante usando questo ... –

+0

Grazie mille PolamReddyRajaReddy – realuser

2

Utilizzare un StateList. Di seguito è riportato un esempio di un selettore con un disegnabile diverso per lo stato premuto:

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

    <item android:drawable="@drawable/drawable_for_pressed_state" android:state_pressed="true"/> 
    <item android:drawable="@drawable/drawable_for_normal_state"/> 

</selector> 
5

Di seguito è il codice di esempio per la lista di stato di colore utilizzato per un pulsante

<?xml version="1.0" encoding="UTF-8"?> 

    <selector xmlns:android="http://schemas.android.com/apk/res/android" > 
     <item 
      android:color="#c0c0c0" 
      android:state_selected="true"/> 
     <item 
      android:color="#ffffff" 
      android:state_pressed="true"/> 
     <item 
      android:color="#9A9A9A" 
      android:state_focused="false" 
      android:state_pressed="false" 
      android:state_selected="false"/> 
</selector> 

anche controllare sotto il collegamento per il colore lista stato

http://developer.android.com/guide/topics/resources/color-list-resource.html

+2

tag richiede un attributo 'drawable' o tag figlio che definisce un drawable –

+0

@IgorGanapolsky questo è un selettore di colore, non un drawable - va in ris/color – Tom

3

È necessario utilizzare un drawable con selettore per gli stati pressati, più comunemente fatto in link qui sotto xml.

http://developer.android.com/reference/android/graphics/drawable/StateListDrawable.html

http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList

+0

Questo non funziona, il codice twrows exexception 'org.xmlpull.v1.XmlPullParserException: Binary XML file line # 6: tag richiede un attributo 'drawable' o tag figlio che definisce un drawable' – HitOdessit

-3

Se si desidera cambiare il colore di sfondo pulsante poi basta fare come segue ..

@Override 
    public void onClick(View v) {  
     if(v.getId() == R.id.btn01) { 
       btn1.setBackgroundColor(Color.RED); 
       btn1.setTextColor(Color.WHITE); 

      } 

solo aggiungi questo codice nell'evento onclick del pulsante.

0

edittext_modified_states.xml

<?xml version="1.0" encoding="UTF-8"?> 
<selector 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/apptheme_textfield_activated_holo_light" /> 
    <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/apptheme_textfield_focused_holo_light" /> 
    <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/apptheme_textfield_disabled_focused_holo_light"/> 
    <item android:drawable="@drawable/apptheme_textfield_default_holo_light" /> 
</selector> 

qui: http://android-holo-colors.com goto questo sito e selezionare il vostro colore e Imort nella vostra drawable. goto layout xml e imposta lo sfondo del pulsante. Android: background = "@ disegnabili/edittext_modified_states"

Problemi correlati