web-dev-qa-db-fra.com

Android ajouter une image au bouton

Je souhaite ajouter une image à une Button (pas de imagebutton, car le bouton en question peut contenir du texte ou une image; le bouton image a le même problème), tout en conservant le bouton de style Android d'origine. Donc, ajouter Android:background dans le XML ne coupe pas, cela enlèvera le bouton par défaut d'Android avec des coins arrondis, etc. (Android.R.drawable.btn_default)

Est-ce que c'est possible?

Je pense qu’une façon de faire est de créer une image 9patch pour le bouton enfoncé (une en haut et une en bas) et onTouch Action_DOWN de dessiner un fond superposé et de le placer sur le bouton, et de faire la même chose mais avec un autre 9patch pour onTouch Action_UP, Je pense que cela réduira considérablement les performances de l'application, car cela nécessitera beaucoup de lecture des ressources et la fusion des calques pour tous les clics de bouton (et pour mon application, ce sera beaucoup). Est-ce que ce que je dis ci-dessus est correct?

EDIT: Je ne peux pas déclarer la source de l'image dans le fichier XML, car je reçois les images d'un service Web. Tout peut donc être placé sur les boutons, mais cela doit se faire par programme.

11
stealthjong

Cela peut être fait en utilisant les attributs Android:drawableTop, Android:drawableBottom, Android:drawableLeft, Android:drawableRight dans votre layout.xml. 

25
Ridcully

 enter image description here

     <Button
            Android:layout_width="0dp"
            Android:layout_weight="1"
            Android:background="@drawable/home_button"
            Android:drawableLeft="@Android:drawable/ic_menu_edit"
            Android:drawablePadding="6dp"
            Android:gravity="left|center"
            Android:height="60dp"
            Android:padding="6dp"
            Android:text="AndroidDhina"
            Android:textColor="#000"
            Android:textStyle="bold" />

pour plus d'informations http://androiddhina.blogspot.in/2015/09/how-to-add-image-inside-button.html

10
Dhina k

Définir ci-dessous la propriété du bouton d'affichage de l'image avec du texte, en utilisant cette propriété.

<Button Android:drawableTop="@drawable/ic_launcher"/>
8
Dipak Keshariya

Pour le réglage de l'image: 

btn.setBackgroundResource(R.drawable.ic_launcher);

Pour la mise en texte:

btn.setText("My Button");

Code: 

private Drawable buttonDrawable;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    final Button btn=(Button) findViewById(R.id.button1);
    buttonDrawable=btn.getBackground();
    //Setting the image.
    btn.setBackgroundResource(R.drawable.ic_launcher);
    btn.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            /*Removing image and setting text*/
            btn.setBackgroundDrawable(buttonDrawable);
            btn.setText("My Button");   
        }
    });
}
2
Eldhose M Babu

Vous pouvez créer votre propre dessin avec plusieurs états et le définir en arrière-plan 

<?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/selected" />
    <item Android:drawable="@drawable/normal" />
</selector>

Les tirables peuvent avoir des coins arrondis comme ça.

<corners Android:topLeftRadius="5dp" Android:topRightRadius="5dp"
         Android:bottomLeftRadius="0.2dp" Android:bottomRightRadius="0.2dp"/>
0
weakwire