web-dev-qa-db-fra.com

Alignement du texte / de la mise en page dans Android (textAlignment, gravity)

Quelle est la différence entre Android:textAlignment et Android:gravity?

51
Chrizzor

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 .

48
stinepike

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:
Resulting layout in API 15

Disposition résultante dans API 17+:
Resulting layout in API 17+

10
Will P

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é.

5
Pedro Matos

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 ViewtextAlignment ne fonctionne pas pour le positionnement du texte pendant que TextViewgravity fonctionne.

Encore une autre raison de préférer gravity.

2
laalto