web-dev-qa-db-fra.com

Centrage vertical du texte de TextView par rapport à son image drawableLeft

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?

45
user940016

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" />
101
Martin Sykes

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"
57
Learn OpenGL ES

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.

3
shengming

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.

0
Ovidiu Latcu