Quelle est la différence entre Android:textAlignment
et Android:gravity
?
Tout ce que je peux voir, c'est que le textAlignment est un membre de la classe View et la gravité est le membre de la classe TextView. Ainsi, pour le TextView et ses sous-classes, vous pouvez utiliser la gravité tandis que vous pouvez utiliser le textAlignment pour toutes les vues.
Comme TextView et ses sous-classes ont besoin de plus de fonctionnalités d'alignement de texte, vous pouvez donc voir qu'il y a plus d'options de gravité alors que dans textAlignment il n'y a que des options de base. Bien que ce ne soit que ma supposition car je n'ai trouvé aucune documentation claire sur la différence.
Vous pouvez voir ces deux liens de documentation: textAlignment et gravity .
Avec l'API 15, Android:textAlignment
peut ne pas avoir le résultat souhaité. L'extrait ci-dessous tente de centrer le premier TextView
objet à l'aide de Android:textAlignment="center"
. Le second utilise Android:gravity="center_horizontal"
. Le textAlignment
n'a aucun effet alors que la gravité fonctionne bien. Avec l'API 17+, textAlignment
centre le texte comme prévu.
Pour être certain que votre texte est aligné correctement avec toutes les versions, j'irais avec gravité.
<LinearLayout
Android:layout_width="50dp"
Android:layout_height="match_parent"
Android:orientation="vertical">
<TextView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_marginTop="5dp"
Android:text="Fri"
Android:textAlignment="center"
Android:textSize="16sp" />
<TextView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:text="29"
Android:gravity="center_horizontal"
Android:textSize="18sp" />
</LinearLayout>
Disposition résultante dans l'API 15:
Disposition résultante dans API 17+:
Pour autant que j'ai vu textAlignment semble être principalement inutilisé. Par sa description, il devrait faire juste l'alignement à droite ou à gauche. La gravité semble être un alignement de texte amélioré.
Un autre point non explicitement mentionné:
Si votre application a le support RTL désactivé avec par exemple Android:supportsRtl="false"
dans le manifeste application
tag, puis View
textAlignment
ne fonctionne pas pour le positionnement du texte pendant que TextView
gravity
fonctionne.
Encore une autre raison de préférer gravity
.