Android - TextView horizontal in LinearLayout zentrieren


110

Ich habe das folgende Grundlayout

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

Es scheint, dass die XML korrekt ist, aber der Text ist nach links ausgerichtet. Die Textansicht nimmt die gesamte Breite des übergeordneten Elements ein und die Textansicht wird so eingestellt, dass sie zentriert ist. Ich bin mir nicht sicher, wo das Problem liegt ...


2
Versuchen Sie Android: Gravity = "Mitte" für Ihre Textansicht
user370305

Antworten:


227

Da die Textansicht die gesamte Breite des inneren LinearLayouts ausfüllt, befindet sie sich bereits in der horizontalen Mitte des Layouts . Wenn Sie es verwenden android:layout_gravity, wird das Widget als Ganzes in der angegebenen Schwerkraft platziert. Anstatt das gesamte Widget-Center zu platzieren, versuchen Sie wirklich, den Inhalt in das Center zu platzieren, was mit erreicht werden kann, android:gravity="center_horizontal"und das android:layout_gravityAttribut kann entfernt werden.


3
Wenn ich es richtig verstehe, könnte er "android: layout_width =" fill_parent "in" wrap_content "ändern und dann android: layout_gravity =" center_horizontal "verwenden. Habe ich recht?
Paul Brewczynski

1
@bluesm Nein, das innere LinearLayout erlaubt sich keinen Platz, der nicht mit einer Ansicht gefüllt ist (ohne den Fall eines leeren LinearLayout). Somit hat das den android:layout_widthgleichen Wert (nach dem Layout). Da die Breite des Textview auf dem mit dem inneren Linearlayout gleich ist die Textview hat effektiv die android:layout_gravityWerte von left, rightund centerzur gleichen Zeit.
Dan S

1
Für ImageViewsein layout_gravityund für TextViewsein gravityist, was nur funktioniert. Android ist großartig! Vielen Dank an alle schönen SO-Beiträge, ohne die eine Entwicklung einfach nicht möglich war.
Atul

1
nicht vergessen 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>


24

Wenn Sie setzen <TextView>in in der Mitte die <Linearlayout>erste Stelle setzen dann android:layout_width="fill_parent"obligatorisch
Bedarf Keine andere Schwere der Verwendung

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


4

Verwenden Sie einfach: android: layout_centerHorizontal = "true"

Dadurch wird die gesamte Textansicht in die Mitte gestellt

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.