J'essaie d'avoir une image (comme arrière-plan) sur un bouton et d'ajouter dynamiquement, en fonction de ce qui se passe pendant l'exécution, du texte au-dessus / au-dessus de l'image.
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 uniquement définir une image avec android:drawableBottom
des attributs XML similaires tels que définis ici .
Cependant, ces attributs combinent uniquement le texte et l'image dans les dimensions x et y, ce qui signifie que je peux dessiner une image autour de mon texte, mais pas en dessous / sous mon texte (avec l'axe z défini comme sortant de l'affichage).
Des suggestions sur la façon de procéder? Une idée serait d'étendre Button
ou ImageButton
et de remplacer la draw()
méthode -m. Mais avec mon niveau actuel de connaissances, je ne sais pas vraiment comment faire (rendu 2D). Peut-être que quelqu'un avec plus d'expérience connaît une solution ou au moins quelques conseils pour commencer?
Réponses:
Vous pouvez appeler
setBackground()
unButton
pour définir l'arrière-plan du bouton.Tout texte apparaîtra au-dessus de l'arrière-plan.
Si vous cherchez quelque chose de similaire en XML, il y a:
android:background
attribut qui fonctionne de la même manière.la source
Pour les utilisateurs qui souhaitent simplement mettre en arrière-plan, image-icône et texte dans un
Button
fichier différent:Button
définissez sur un arrière - plan, des attributs drawableTop / Bottom / Rigth / Left et padding .Pour un arrangement plus sophistiqué, vous pouvez également utiliser
RelativeLayout
(ou toute autre disposition) et le rendre cliquable.Tutoriel: grand 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
la source
b.setCompoundDrawablesWithIntrinsicBound(null,R.drawable.home_icon_test,null,null)
place deandroid:drawableTop
etb.setPadding(0,32,0,0)
au lieu deandroid:paddingTop
.Il existe une bien meilleure solution à ce problème.
Prenez simplement une normale
Button
et utilisezdrawableLeft
lesgravity
attributs et.De cette façon, vous obtenez un bouton qui affiche une icône dans le côté gauche du bouton et le texte à droite de l'icône centrée verticalement .
la source
la source
Il suffit d'utiliser un LinearLayout et de faire comme si c'était un
Button
paramètrebackground
et cliquable est la clé:la source
android:onClick
à votre vueil suffit de remplacer
avec
izz une assez bonne astuce ..;)
la source
J'ai adopté une approche différente de celles énoncées ici, et cela fonctionne très bien, j'ai donc voulu la partager.
J'utilise un style pour créer un bouton personnalisé avec l'image à gauche et le texte au centre à droite. Suivez simplement les 4 "étapes faciles" ci-dessous:
I. Créez vos 9 patchs en utilisant au moins 3 fichiers PNG différents et l'outil que vous avez sur: /YOUR_OWN_PATH/android-sdk-mac_x86/tools/./draw9patch. Après cela, vous devriez avoir:
button_normal.9.png, button_focused.9.png et button_pressed.9.png
Ensuite, téléchargez ou créez une icône PNG 24x24.
ic_your_icon.png
Enregistrez tout dans le dossier drawable / de votre projet Android.
II. Créez un fichier XML appelé button_selector.xml dans votre projet sous le dossier drawable /. Les états devraient être comme ceci:
III. Accédez au dossier values / et ouvrez ou créez le fichier styles.xml et créez le code XML suivant:
ButtonNormalTextWithIcon est un "style enfant" car il étend ButtonNormalText (le "style parent").
Notez que la modification de drawableLeft dans le style ButtonNormalTextWithIcon, en drawableRight, drawableTop ou drawableBottom vous pouvez placer l'icône dans une autre position par rapport au texte.
IV. Accédez à la mise en page / dossier où vous avez votre XML pour l'interface utilisateur et allez au bouton où vous souhaitez appliquer le style et le faire ressembler à ceci:
Et ... voilà! Vous avez obtenu votre bouton avec une image sur le côté gauche.
Pour moi, c'est la meilleure façon de le faire! car en procédant de cette façon, vous pouvez gérer la taille du texte du bouton séparément de l'icône que vous souhaitez afficher et utiliser le même arrière-plan que vous pouvez dessiner pour plusieurs boutons avec des icônes différentes en respectant les directives de l'interface utilisateur Android à l'aide de styles.
Vous pouvez également créer un thème pour votre application et y ajouter le "style parent" pour que tous les boutons se ressemblent et appliquer le "style enfant" avec l'icône uniquement là où vous en avez besoin.
la source
la source
Vous pouvez utiliser
drawableTop
(égalementdrawableLeft
, etc.) pour l'image et définir le texte sous l'image en ajoutant legravity
left|center_vertical
la source
Mise à jour importante
Pour vecteur dessinable
Si vous utilisez le dessin vectoriel, vous devez
Il a été publié en version
1.1.0-alpha01
, donc la version compatible avec l'app devrait être au moins1.1.0-alpha01
. La dernière version actuelle est1.1.0-alpha02
, utilisez les dernières versions pour une meilleure fiabilité, voir les notes de version - lien .Utilisez
AppCompatTextView
/AppCompatButton
/AppCompatEditText
app:drawableLeftCompat
,app:drawableTopCompat
,app:drawableRightCompat
,app:drawableBottomCompat
,app:drawableStartCompat
etapp:drawableEndCompat
Pour étirer régulièrement
Si vous n'avez pas besoin de dessin vectoriel, vous pouvez
android:drawableLeft
,android:drawableRight
,android:drawableBottom
,android:drawableTop
TextView
etButton
&EditText
ouAppCompat
.Vous pouvez obtenir une sortie comme ci-dessous -
la source
xmlns:app="http://schemas.android.com/apk/res-auto"
espace de noms et je ne vois pas ces choses compatibles avec les applications.For vector drawable
nouveau le point.Ma solution conviendra probablement à beaucoup d'utilisateurs, je l'espère.
Ce que je suggère, c'est faire TextView avec votre style. Il fonctionne parfaitement pour moi et possède toutes les fonctionnalités, comme un bouton.
Tout d'abord, faisons un style de bouton, que vous pouvez utiliser partout ... Je crée button_with_hover.xml
Deuxièmement, permet de créer un bouton d'affichage de texte.
Et c'est un résultat. Stylisez ensuite votre bouton personnalisé avec n'importe quelle couleur ou toute autre propriété et marge. Bonne chance
la source
http://www.mokasocial.com/2010/04/create-a-button-with-an-image-and-text-android/
la source
Ce code fonctionne parfaitement pour moi
la source
Vous pouvez utiliser ceci:
en ce que j'ai mis une image
background
et aussi ajouté du texte ..!la source
Ou vous pouvez par programme:
la source
la source