ich habe vertical
lineares Layout mit 2 TextView
Kinder.
Ich möchte, dass die Kinder vertikal zentriert sind, auch wenn nur ein Kind tatsächlich Platz füllt.
Hier ist ein Testlayout:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="60dp"
android:orientation="vertical"
android:gravity="center_vertical|left"
android:background="@color/light_gray" >
<TextView
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="text text text" >
</TextView>
<TextView
android:id="@+id/tv2"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
wann tv2
Ansicht ist gesetzt (wie gezeigt), tv1
wird nicht vertikal zentriert sein.
So sieht es aus: (siehe tv2
"füllt Platz" obwohl es keinen Text hat
während was ich will ist:
was passiert, wenn die tv2
wird aus dem Layout entfernt.
BTW, Ich möchte vermeiden zu verwenden visibility
Attribut, ich weiß, dass ich einstellen kann GONE
Antworten:
0 für die Antwort № 1Ich werde dies löschen, sobald ich sicher bin, dass du das richtig machst und es immer noch nicht für dich funktioniert (basierend auf Kommentaren), aber ich möchte überprüfen, ob du die Dinge richtig machst ...
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="60dp"
android:orientation="vertical"
android:gravity="center"
android:weightSum="2"
android:background="@color/light_gray" >
<TextView
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center_vertical"
android:text="text text text" >
</TextView>
<TextView
android:id="@+id/tv2"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center_vertical" />
</LinearLayout>
Dies sollte dein Layout sein. Hast du es so eingerichtet?
HINWEIS
Sie deklarieren Ihren Root explizitLinearLayout Höhe bis 60dp. Ich würde nicht vorschlagen, dies zu tun, aber wenn Sie planen, es so zu halten, können Sie auch einfach Ihre TextView-Höhen deklarieren, etwas wie
<TextView
android:layout_width="wrap_content"
android:layout_height="30dp"
android:gravity="center_vertical" />
Bitte lassen Sie mich wissen, wenn Sie überprüft haben, dass dies nicht funktioniert.
BEARBEITEN
Dadurch werden Ihre TextViews in der Mitte des Layouts zentriert, unabhängig davon, was in diesen TextViews tatsächlich enthalten ist:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@color/light_gray" >
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_centerInParent="true" >
<TextView
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content
android:gravity="center_vertical"
android:text="text text text" >
</TextView>
<TextView
android:id="@+id/tv2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical" />
</LinearLayout>
</RelativeLayout>