web-dev-qa-db-fra.com

comment aligner le texte verticalement au centre android

J'ai un texte en arabe, donc je règle la gravité à droite pour pouvoir commencer le texte du côté droit. Le texte commence à partir de maintenant. Mais un autre problème est que le texte commence à s'afficher en haut de la page. Mais je dois centrer verticalement le texte. Bien que j'ai essayé plusieurs variantes, je ne pouvais pas le centrer verticalement.

Voici l'exemple de mon fichier XML.

<LinearLayout
            Android:id="@+id/linearLayout5"
            Android:layout_width="fill_parent"
            Android:layout_height="wrap_content"
            Android:gravity="right"
            Android:orientation="vertical" >

            <TextView
                Android:id="@+id/textView2"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:layout_gravity="center_vertical"
                Android:layout_marginBottom="23dp"
                Android:gravity="right"
                Android:padding="@dimen/padding_maintextview"
                Android:text="@string/text"
                Android:textAppearance="?android:attr/textAppearanceMedium"
                Android:textSize="20sp" />
        </LinearLayout>

Le problème est avec textview ci-dessus.

Ici, j'ai mis un fichier XML entier.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:background="@drawable/page1background"
    Android:paddingRight="@dimen/padding_large" >

    <TextView
        Android:id="@+id/textView1"
        Android:layout_width="196dp"
        Android:layout_height="wrap_content"
        Android:layout_centerHorizontal="true"
        Android:gravity="center_horizontal"
        Android:paddingTop="@dimen/padding_Title_Top"
        Android:text="@string/text"
        Android:textAppearance="?android:attr/textAppearanceMedium"
        Android:textSize="20sp" />

    <LinearLayout
        Android:id="@+id/linearLayout1"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_below="@id/textView1"
        Android:gravity="center_horizontal"
        Android:orientation="vertical" >

        <View
            Android:id="@+id/view1"
            Android:layout_width="fill_parent"
            Android:layout_height="5dp" />
    </LinearLayout>

    <ScrollView
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:layout_above="@id/linearLayout2"
        Android:layout_below="@id/linearLayout1"
        Android:layout_gravity="center"
        Android:padding="@dimen/padding_maintextview" >

        <LinearLayout
            Android:id="@+id/linearLayout5"
            Android:layout_width="fill_parent"
            Android:layout_height="wrap_content"
            Android:gravity="right"
            Android:orientation="vertical" >

            <TextView
                Android:id="@+id/textView2"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:layout_gravity="center_vertical"
                Android:layout_marginBottom="23dp"
                Android:gravity="right"
                Android:padding="@dimen/padding_maintextview"
                Android:text="@string/text"
                Android:textAppearance="?android:attr/textAppearanceMedium"
                Android:textSize="20sp" />
        </LinearLayout>
    </ScrollView>

    <LinearLayout
        Android:id="@+id/linearLayout2"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_alignParentBottom="true"
        Android:layout_centerHorizontal="true" >

        <View
            Android:id="@+id/view2"
            Android:layout_width="fill_parent"
            Android:layout_height="100dp" />
    </LinearLayout>

    <LinearLayout
        Android:id="@+id/linearLayout3"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_alignParentBottom="true"
        Android:layout_centerHorizontal="true" >

        <ImageButton
            Android:id="@+id/back_arrow"
            Android:layout_width="0dip"
            Android:layout_height="wrap_content"
            Android:layout_marginBottom="30dp"
            Android:layout_marginRight="45dp"
            Android:layout_weight=".5"
            Android:background="@drawable/backbut"
            Android:contentDescription="@string/Description"
            Android:onClick="onClickBtn"
            Android:src="@drawable/backarrowpress" />

        <ImageButton
            Android:id="@+id/copyButton"
            Android:layout_width="0dip"
            Android:layout_height="wrap_content"
            Android:layout_marginLeft="45dp"
            Android:layout_weight=".5"
            Android:background="@drawable/copy"
            Android:contentDescription="@string/Description"
            Android:onClick="onClickBtn" />
    </LinearLayout>

</RelativeLayout>

Quelqu'un peut-il me montrer où j'ai commis l'erreur? Je pense que le problème est clair. Si non dites moi dans les commentaires.

Ci-joint, j'ai ajouté le code mis à jour après avoir examiné vos réponses.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:background="@drawable/page1background"
    Android:paddingRight="@dimen/padding_large" >

    <TextView
        Android:id="@+id/textView1"
        Android:layout_width="196dp"
        Android:layout_height="wrap_content"
        Android:layout_centerHorizontal="true"
        Android:gravity="center_horizontal"
        Android:paddingTop="@dimen/padding_Title_Top"
        Android:text="@string/text"
        Android:textAppearance="?android:attr/textAppearanceMedium"
        Android:textSize="20sp" />

    <LinearLayout
        Android:id="@+id/linearLayout1"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_below="@id/textView1"
        Android:gravity="center_horizontal"
        Android:orientation="vertical" >

        <View
            Android:id="@+id/view1"
            Android:layout_width="fill_parent"
            Android:layout_height="5dp" />
    </LinearLayout>

    <ScrollView
        Android:layout_width="fill_parent"
        Android:layout_height="fill_parent"
        Android:layout_above="@id/linearLayout2"
        Android:layout_below="@id/linearLayout1"
        Android:layout_gravity="center"
        Android:layout_centerInParent="true"
        Android:padding="@dimen/padding_maintextview" >

        <LinearLayout
            Android:id="@+id/linearLayout5"
            Android:layout_width="fill_parent"
            Android:layout_height="wrap_content"
            Android:gravity="right"
            Android:orientation="vertical" >

            <TextView
                Android:id="@+id/textView2"
                Android:layout_width="fill_parent"
                Android:layout_height="fill_parent"
                Android:layout_gravity="center_vertical"
                Android:layout_marginBottom="23dp"
                Android:gravity="center_vertical|right"
                Android:padding="@dimen/padding_maintextview"
                Android:text="@string/text"
                Android:textAppearance="?android:attr/textAppearanceMedium"
                Android:textSize="20sp" />
        </LinearLayout>
    </ScrollView>

    <LinearLayout
        Android:id="@+id/linearLayout2"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_alignParentBottom="true"
        Android:layout_centerHorizontal="true" >

        <View
            Android:id="@+id/view2"
            Android:layout_width="fill_parent"
            Android:layout_height="100dp" />
    </LinearLayout>

    <LinearLayout
        Android:id="@+id/linearLayout3"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_alignParentBottom="true"
        Android:layout_centerHorizontal="true" >

        <ImageButton
            Android:id="@+id/back_arrow"
            Android:layout_width="0dip"
            Android:layout_height="wrap_content"
            Android:layout_marginBottom="30dp"
            Android:layout_marginRight="45dp"
            Android:layout_weight=".5"
            Android:background="@drawable/backbut"
            Android:contentDescription="@string/Description"
            Android:onClick="onClickBtn"
            Android:src="@drawable/backarrowpress" />

        <ImageButton
            Android:id="@+id/copyButton"
            Android:layout_width="0dip"
            Android:layout_height="wrap_content"
            Android:layout_marginLeft="45dp"
            Android:layout_weight=".5"
            Android:background="@drawable/copy"
            Android:contentDescription="@string/Description"
            Android:onClick="onClickBtn" />
    </LinearLayout>

</RelativeLayout>

Mais je suis dans la même situation. Aucun texte n'est centré verticalement

44
newday

Vos attributs TextView doivent être quelque chose comme,

<TextView ... 
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:gravity="center_vertical|right" ../>

Maintenant, Description pourquoi cela doit être fait,

 Android:layout_width="match_parent"
 Android:layout_height="match_parent"

Fait votre TextView à match_parent ou fill_parent si tu ne veux pas être comme ça, match_parent vous devez donner certaines valeurs spécifiées à layout_height donc il y a de la place pour le centre de gravité vertical. Android:layout_width="match_parent" nécessaire car il aligne votre TextView dans le côté droit afin que vous puissiez reconnaître le respect de la disposition parente de TextView.

Maintenant, c'est à propos de Android:gravity qui rend le contenu de votre alignement TextView. Android:layout_gravity rend l'alignement de TextView respecté par rapport à sa disposition parent.

Mise à jour:

Comme ci-dessous, le commentaire dit use fill_parent au lieu de match_parent. (Problème sur un appareil.)

107
user370305

juste utiliser comme ça pour faire quelque chose au centre

 Android:layout_gravity="center"
 Android:gravity="center"

mis à jour :

Android:layout_gravity="center|right"
Android:gravity="center|right"

Mise à jour: Il suffit de supprimer MarginBottom de votre textview .. Faites comme ça .. pour votre textView

<LinearLayout
        Android:id="@+id/linearLayout5"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:layout_gravity="center"  >

        <TextView
            Android:id="@+id/textView2"
            Android:layout_width="fill_parent"
            Android:layout_height="wrap_content"
            Android:layout_gravity="center" 
            Android:gravity="center|right"
            Android:text="hello" 
            Android:textSize="20dp" />
    </LinearLayout>
17
Rahul Baradia

Le problème est le remplissage de la police dans la vue texte. Ajoutez simplement à votre textview:

Android:includeFontPadding="false"
10
jegumi

Essayez de mettre Android:gravity="center_vertical|right" dans le parent LinearLayout sinon comme dans RelativeLayout, vous pouvez mettre Android:layout_centerInParent="true" à l'intérieur de votre scrollView.

8
Android Killer

Dans la disposition relative, vous devez spécifier la hauteur de la vue texte:

Android:layout_height="100dp"

Ou spécifiez l'attribut de lignes:

Android:lines="3"
0
tier777