wyrównaj centrum tekstu z Androidem

150

Wiem, że to brzmi łatwo. Muszę umieścić tekst na środku, ale gdy tekst jest zbyt długi, musi znajdować się poniżej, ale nadal wyrównywać na środku mojego xml.

Oto mój kod:

 <LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/showdescriptioncontenttitle"
    android:paddingTop="10dp"
    android:paddingBottom="10dp"
    android:layout_centerHorizontal="true"
>
    <TextView 
        android:id="@+id/showdescriptiontitle"
        android:text="Title"
        android:textSize="35dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
    />
</LinearLayout>

Umieściłem paddingTop i Bottom, ponieważ potrzebuję trochę miejsca. PS: Mój kod jest większy; jest w RelativeLayout.

Tsunaze
źródło
Tutaj nie
użyłeś

Odpowiedzi:

381

Ustaw również android:gravityparametr w TextViewna center.

Aby przetestować efekty różnych parametrów układu, zalecam użycie innego koloru tła dla każdego elementu, aby można było zobaczyć, jak zmienia się układ z parametrami takimi jak grawitacja, układ_grawitacji lub inne.

peter.bartos
źródło
Dziękuję, zadziałało, potrzebuję trochę czasu, aby potwierdzić swoją odpowiedź!
Tsunaze,
Tak to prawda. Ale myślę tylko wtedy, gdy TextView ma więcej niż jedną linię. Ponieważ tylko 1 nie pełny wiersz tekstu, TextView nie wypełni układu w poziomie
peter.bartos
Możesz tego uniknąć, ustawiając android TextView: layout_width = "fill_parent"
peter.bartos
2
Nie należy tego mylić android:layout_gravity. No! :)
Joshua Pinter
29

używać w ten sposób

txt.setGravity(Gravity.CENTER);
bhargavkumar040
źródło
21

użyj w ten sposób w XML

   <TextView
        android:id="@+id/myText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Time is precious, so love now."
        android:gravity="center"
        android:textSize="30dp"
        android:textColor="#fff"
        />
sakshi
źródło
7

Możesz użyć następujących:

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/showdescriptioncontenttitle"
    android:paddingTop="10dp"
    android:paddingBottom="10dp">

 <TextView
        android:id="@+id/textview1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="Your text"
        android:typeface="serif" />
</LinearLayout>

Aby można było użyć właściwości „center”, układ musi być względny.

gsb
źródło
5

Dodanie android:gravity="center"do TextView załatwi sprawę (być układem nadrzędnym Relative/Linear)!

Należy również unikać używania dp do określania rozmiaru czcionki. Zamiast tego użyj sp.

Divya
źródło
3

dodaj layout_gravity i gravity z wartością środkową w TextView

<TextView
    android:text="welcome text"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:gravity="center"
    />
Mubin
źródło
2

Po prostu dodaj te 2 linie;

android:gravity="center_horizontal"
android:textAlignment="center"
Ramandeep Singh
źródło
1
android:layout_gravity="center"

lub

android:gravity="center"

oba działają dla mnie.

Dinith
źródło