Android - Center TextView Horizontally in LinearLayout

AndroidAndroid LayoutAndroid LinearlayoutLayout Gravity

Android Problem Overview


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

Android Solutions


Solution 1 - Android

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.

Solution 2 - Android

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>

Solution 3 - Android

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

Solution 4 - Android

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

Solution 5 - Android

Just use: android:layout_centerHorizontal="true"

It will put the whole textview in the center

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJake WilsonView Question on Stackoverflow
Solution 1 - AndroidDan SView Answer on Stackoverflow
Solution 2 - Androidpatel135View Answer on Stackoverflow
Solution 3 - AndroidJoeLallouzView Answer on Stackoverflow
Solution 4 - AndroidBlackbeltView Answer on Stackoverflow
Solution 5 - AndroidcharlenecipresView Answer on Stackoverflow