Android - Center TextView Horizontally in LinearLayout
Asked Answered
C

5

118

I have the following basic layout

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

It seems like the xml is correct but the text is aligned to the left. The textview takes up the entire width of the parent and the textview is set to be centered. Not sure what the problem is...

Cleaning answered 4/10, 2011 at 17:44 Comment(1)
try android:gravity="center" for your textviewAndrew
B
239

What's happening is that since the the TextView is filling the whole width of the inner LinearLayout it is already in the horizontal center of the layout. When you use android:layout_gravity it places the widget, as a whole, in the gravity specified. Instead of placing the whole widget center what you're really trying to do is place the content in the center which can be accomplished with android:gravity="center_horizontal" and the android:layout_gravity attribute can be removed.

Brooklime answered 4/10, 2011 at 17:54 Comment(4)
If I understand correctly he could change "android:layout_width="fill_parent" to "wrap_content" and then use android:layout_gravity="center_horizontal". Am I right ?Ashely
@bluesm No, the inner LinearLayout doesn't allow itself to have space that is not filled with a View (not considering the case of an empty LinearLayout). Thus the the android:layout_width will have the same value (after layout). Since the width of the TextView is equal to the with of the inner LinearLayout the TextView effectively has the android:layout_gravity values of left, right, and center at the same time.Brooklime
For ImageView its layout_gravityand for TextView its gravity is what only works. Android is great ! Thanks to all beautiful SO posts without which development was just impossible.Licha
don't forget about android:layout_width="match_parent"Drastic
I
26

If you set <TextView> in center in <Linearlayout> then first put android:layout_width="fill_parent" compulsory
No need of using any other gravity

    <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>
In answered 6/5, 2014 at 5:15 Comment(0)
R
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>

Riess answered 4/10, 2011 at 17:49 Comment(0)
V
18

Use android:gravity="center" in TextView instead of layout_gravity.

Vimen answered 4/10, 2011 at 17:47 Comment(0)
C
3

Just use: android:layout_centerHorizontal="true"

It will put the whole textview in the center

Colchis answered 24/6, 2018 at 15:7 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.