Comment aligner drawableLeft de dessus à la place du centre dans le TextView android?
Dans TextView
j'ai mis drawableLeft
où la drawable
est de montrer à partir du centre. J'ai besoin d'aligner les drawableLeft
avec le haut à l'intérieur de TextView
comme cette image.
Est-il possible de réaliser cela?
- Pas, tout simplement. Il n'y a pas
drawableTopLeft
. Donc, pour réaliser ce que vous voulez que ce soit une ImageView ou de faire un nouveau contrôle qui s'étend TextView. - utilisation BitmapDrawable.setGravity méthode, assurez-vous que votre drawable limites de hauteur est égale à la hauteur textview
- vous êtes peut-être droit. Pourriez-vous nous donner quelques explications sur les commandes personnalisées.
- Qu'est-ce que votre texte en vue de la hauteur? Qui ont de la constante de la hauteur?
- TextView hauteur n'est pas constante. Il augmentera à mesure que la taille du texte augmenter.
- C'est un grand argument. Voici comment Lars Vogel explique que: vogella.com/tutorials/AndroidCustomViews/article.html et c'est la référence officielle: developer.android.com/guide/topics/ui/custom-components.html
- si votre textview hauteur ont une valeur constante comme 50dp, vous pouvez créer un .le fichier png avec hauteur=50 puis de définir votre image au-dessus de la moitié .fichier png(hauteur 25dp ci-dessus). si NON, vous pouvez utiliser à partir de ce tour, mais avec Ninepatch. J'espère que ce sera utile.
- C'est assez simple en utilisant juste du XML, voir ma réponse ci-dessous.
Vous devez vous connecter pour publier un commentaire.
Voir ma réponse ici.
Vous pouvez aligner un composé Retirable en haut (ou en bas), par la création d'une coutume Drawable qui enveloppe votre Drawable, puis de manipuler le dessin de votre personnalisé Dessiné par substitution de la méthode
onDraw(Canvas)
.L'exemple ci-dessous est la plus simple possible exemple. Cela permet d'aligner l'image vers le haut, mais vous pouvez aussi le faire aligner vers le bas, la gauche ou la droite de la TextView par la mise en œuvre de la logique nécessaire à la
onDraw(Canvas)
-méthode. Vous pouvez également construire dans une marge, dans leonDraw(Canvas)
, pour faire de votre conception de la mise en œuvre de pixel parfait.Exemple d'utilisation:
Exemple de code:
Utilisation SpannableString et ImageSpan pour atteindre cet objectif.
de l'espace supplémentaire dans la variable de chaîne est remplacée par l'icône.
Je pense que c'est même plus facile que toutes les réponses ci-dessus: il Vous suffit pour ce faire:
Et puis
Rappelez-vous cela ne fonctionne correctement qu'avec GAUCHE et DROIT composé un drawable
title.setCompoundDrawablesWithIntrinsicBounds(icon, null, null, null);
au lieuSi vous voulez purement XML solution, alors vous pouvez utiliser un encart drawable position de votre choix drawable.
Vous pourriez avoir à jouer avec l'encart de la valeur en fonction de votre scénario. Ensuite, il suffit d'utiliser cette XML drawable dans votre TextView drawableLeft/Début de la définition.
fontSize
et d'autres propriétés de laTextView
. C'est un très joli hack, bien que pour une seule ligne.vous pouvez le faire comme ceci:
Votre pouvez l'utiliser de cette manière. Peut il peut utile vous.
fill_parent
est obsolète depuis l'API de Niveau 8 inclus. Utilisationmatch_parent
, au lieuLinearLayout
). Par la façon dont vous n'avez même pas besoin de nidification si vous utilisezConstraintLayout
ouRelativeLayout
, mais c'est toujours 2 points de vue.