Android - Pusatkan TextView Secara Horizontal di LinearLayout

111

Saya memiliki tata letak dasar berikut

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/title_bar_background">

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:padding="10dp"
        android:text="HELLO WORLD" />

    </LinearLayout>
<LinearLayout>

Sepertinya xml sudah benar tetapi teksnya diratakan ke kiri. Tampilan teks menempati seluruh lebar induk dan tampilan teks disetel ke tengah. Tidak yakin apa masalahnya ...

Jake Wilson
sumber
2
coba android: gravity = "center" untuk textview Anda
user370305

Jawaban:

227

Apa yang terjadi adalah karena TextView mengisi seluruh lebar LinearLayout bagian dalam, TextView sudah berada di tengah horizontal layout . Saat Anda menggunakannya android:layout_gravity, tempatkan widget, secara keseluruhan, dalam gravitasi yang ditentukan. Alih-alih menempatkan seluruh pusat widget, yang sebenarnya Anda coba lakukan adalah menempatkan konten di tengah yang dapat diselesaikan dengan android:gravity="center_horizontal"dan android:layout_gravityatributnya dapat dihapus.

Dan S
sumber
3
Jika saya memahaminya dengan benar, dia dapat mengubah "android: layout_width =" fill_parent "menjadi" wrap_content "dan kemudian menggunakan android: layout_gravity =" center_horizontal ". Betul?
Paul Brewczynski
1
@bluesm Tidak, LinearLayout bagian dalam tidak mengizinkan dirinya untuk memiliki ruang yang tidak diisi dengan View (tidak mempertimbangkan kasus LinearLayout kosong). Dengan demikian android:layout_widthakan memiliki nilai yang sama (setelah layout). Karena lebar TextView sama dengan dengan dari LinearLayout dalam TextView secara efektif memiliki android:layout_gravitynilai-nilai left, rightdan centerpada saat yang sama.
Dan S
1
Untuk ImageViewyang layout_gravitydan untuk TextViewyang gravityyaitu apa saja bekerja. Android itu hebat! Terima kasih untuk semua posting SO yang indah yang tanpanya pengembangan tidak mungkin dilakukan.
Atul
1
jangan lupa tentang android:layout_width="match_parent"
Choletski
24
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/title_bar_background">

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:padding="10dp"
    android:text="HELLO WORLD" />

</LinearLayout>

JoeLallouz
sumber
24

Jika Anda mengatur <TextView>di tengah <Linearlayout>maka pertama masukkan android:layout_width="fill_parent"wajib
Tidak perlu menggunakan gravitasi lainnya

    <LinearLayout
            android:layout_toRightOf="@+id/linear_profile" 
            android:layout_height="wrap_content"
            android:layout_width="fill_parent"
            android:orientation="vertical"
            android:gravity="center_horizontal">
            <TextView 
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:text="It's.hhhhhhhh...."
                android:textColor="@color/Black"

                />
    </LinearLayout>
patel135
sumber
16

Gunakan android:gravity="center"dalam TextViewsebagai ganti layout_gravity.

Sabuk hitam
sumber
Jawaban singkat dan tepat. Terima kasih
nurnachman
4

Cukup gunakan: android: layout_centerHorizontal = "true"

Ini akan menempatkan seluruh textview di tengah

charlenecipres.dll
sumber