2013-04-15 5 views
0

Dans une application Android, je veux changer la couleur de fond d'un Button.Fond de bouton

J'ai essayé de changer la propriété "Background" de android:Drawable/btn_default_holo_light à #FFFF00 et j'ai obtenu la nouvelle couleur comme désiré. L'inconvénient est que la forme du Button changé ainsi: la marge de Button originale a disparu et la zone colorée se large et plus haut pour remplir complètement sa zone.

Comment puis-je changer que la couleur de fond et non l'apparence du Button?

Répondre

4

Vous pouvez définir fond bouton programatically

b= (Button) findViewById(R.id.button1); 
b.setBackgroundColor(Color.RED); 

circonstanciels à l'aide dessinables personnalisés.

buttonbkg.xml dans votre dossier 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="@drawable/pressed" /> 
<item android:state_focused="false" 
    android:drawable="@drawable/normal" /> 
</selector> 

.xml normale dans le dossier drawable

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
<solid android:color="#FFFFFF"/>  
<stroke android:width="3dp" 
     android:color="#0FECFF" /><!-- #330000FF #ffffffff --> 
<gradient 
    android:startColor="#ffffffff" 
    android:endColor="#110000FF" 
    android:angle="90"/> 

<padding android:left="5dp" 
     android:top="5dp" 
     android:right="5dp" 
     android:bottom="5dp"/> 
<corners android:bottomRightRadius="7dp" 
     android:bottomLeftRadius="7dp" 
     android:topLeftRadius="7dp" 
     android:topRightRadius="7dp"/> 

</shape> 

de pressed.xml

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
<solid android:color="#FF1A47"/>  
<stroke android:width="3dp" 
     android:color="#0FECFF"/> 
<padding android:left="5dp" 
     android:top="5dp" 
     android:right="5dp" 
     android:bottom="5dp"/> 
<corners android:bottomRightRadius="7dp" 
     android:bottomLeftRadius="7dp" 
     android:topLeftRadius="7dp" 
     android:topRightRadius="7dp"/> 

Dans votre activity_main.xml

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:background="@drawable/buttonbkg" or android:background="#0EFFFF" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:layout_marginTop="20dp" 
    android:text="Click" /> 
+0

Merci. Je ne pense pas que tout à fait répondu à la question qui a été posée, mais l'information était toujours utile! –

0

Vous ne pouvez pas simplement changer la couleur de fond comme ça, puisque la forme du bouton est défini dans son image d'arrière-plan. Si vous voulez une couleur différente, vous devez créer votre propre arrière-plan. Juste google pour "bouton personnalisé Android", vous trouverez des tonnes d'informations et de tutoriels.

0

Qu'en est-il juste android:backgroud=#FFFF00 dans la balise de bouton. Je pense que cela garderait le thème dessinable donc gardez les marges, mais changez la couleur. Ou est-ce ce que vous avez déjà essayé?