/ / Vertikale Ansicht im vertikalen LinearLayout mit 'leerem' Objekt - Android, Android-Layout, Textansicht

Vertikal vertikale Ansicht im vertikalen LinearLayout mit 'leerem' Objekt - Android, Android-Layout, Textansicht

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

Bildbeschreibung hier eingeben

während was ich will ist:

Bildbeschreibung hier eingeben

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

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