J'ai ce composant:
<TextView
Android:id="@+id/item_name"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:drawableLeft="@drawable/icon" />
L'image dans l'attribut drawableLeft est plus grande que la police du texte, donc je veux que le texte soit centré verticalement par rapport à l'image. Comment puis-je obtenir cet effet?
Vous voulez "gravité" notez que cela ne doit pas être confondu avec la gravité de mise en page, la gravité de mise en page déplace la vue de texte entière, tandis que la gravité déplace le texte dans la vue de texte.
<TextView
Android:id="@+id/item_name"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:drawableStart="@drawable/icon"
Android:gravity="center_vertical" />
En plus de définir la gravité, cela peut également aider à l'alignement dans certaines situations en réduisant les rembourrages en haut et en bas de l'affichage de texte, qui peuvent être inégaux:
Android:includeFontPadding="false"
Si vous ne vous souciez pas des accents de texte, essayez simplement Android:includeFontPadding="false"
. Cela supprimera le rembourrage supérieur et inférieur supplémentaire de TextView
. Quant à Android:gravity="center_vertical"
, cela n'a aucun effet sur mon code.
Vous devez placer à la fois le Drawable
et le TextView
dans un RelativeLayout
et utiliser le layout_alignBaseline
attribut sur votre TextView
.
Vous pouvez également placer uniquement les deux éléments, Drawable
et TextView
dans un LinearLayout
avec une orientation horizontal
et layout_height="wrap_content"
et utilise layout_gravity="center_vertical"
sur votre TextView
.