Android : combinaison de texte et d'image sur un bouton ou un ImageButton

J&#8217essaie d&#8217avoir une image (comme arrière-plan) sur un bouton et d&#8217ajouter dynamiquement, en fonction de ce qui se passe pendant l&#8217exécution, du texte au-dessus de l&#8217image.

Si j'utilise ImageButton, je n'ai même pas la possibilité d'ajouter du texte. Si j'utilise Button, je peux ajouter du texte mais seulement définir une image avec android:drawableBottom et des attributs XML similaires comme définis [ici][1].

Cependant, ces attributs ne combinent le texte et l'image que dans les dimensions x et y, ce qui signifie que je peux dessiner une image autour de mon texte, mais pas sous mon texte (avec l'axe z défini comme sortant de l'affichage).

Avez-vous des suggestions sur la façon de procéder ? Une idée serait d'étendre Button ou ImageButton et de surcharger la méthode draw(). Mais avec mon niveau actuel de connaissances, je ne sais pas vraiment comment faire (rendu 2D). Peut-être que quelqu'un qui a plus d'expérience connaît une solution ou au moins quelques pistes pour commencer ?

[1] : http://developer.android.com/reference/android/widget/TextView.html#attr_android:drawableBottom

*Pour les utilisateurs qui veulent juste mettre un fond, une image-icône et du texte dans un Button à partir de différents fichiers : Définissez sur un Button les attributs background, drawableTop/Bottom/Rigth/Left et padding*.

Pour un arrangement plus sophistiqué, vous pouvez également utiliser RelativeLayout et le rendre cliquable.

Tutoriel: Excellent tutoriel qui couvre les deux cas : http://izvornikod.com/Blog/tabid/82/EntryId/8/Creating-Android-button-with-image-and-text-using-relative-layout.aspx

Commentaires (9)

Il existe une bien meilleure solution pour ce problème.

Prenez simplement un Button normal et utilisez les attributs drawableLeft et gravity.

De cette façon, vous obtenez un bouton qui affiche une icône dans la partie gauche du bouton et le texte à l'emplacement droit de l'icône centré verticalement.

Commentaires (9)
Solution

Vous pouvez appeler setBackground() sur un Bouton pour définir le fond du bouton.

Tout texte apparaîtra au-dessus de l'arrière-plan.

Si vous cherchez quelque chose de similaire en xml, il existe : android:background attribut qui fonctionne de la même manière.

Commentaires (5)