webentwicklung-frage-antwort-db.com.de

Wie wird das lineare Layout auf die vertikale Mitte ausgerichtet?

Ich werde mich bemühen, den vertikalen Mittelpunkt von linearlayout auszurichten, der folgendes Bild (Skycolor-Rand) zeigt, um den vertikalen Mittelpunkt der Schaltfläche zu löschen.

also setze ich die Schwerkraft von id: groupNumbers auf center_vertical.

aber nichts geändert. 

So richten Sie id: groupNumbers an der Mitte der Schaltflächen aus

enter image description here

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
              Android:orientation="horizontal"
              Android:layout_width="match_parent"
              Android:layout_height="match_parent">

    <LinearLayout
            Android:id="@+id/groupNumbers"
            Android:orientation="horizontal"
            Android:gravity="center_vertical"
            Android:layout_weight="0.7"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content">

        <LinearLayout
                Android:orientation="horizontal"
                Android:layout_weight="1"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content">

            <TextView
                    Android:id="@+id/txtSelected01"
                    Android:text="00"
                    Android:textSize="30dp"
                    Android:gravity="center_horizontal"
                    Android:layout_weight="1"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"/>
        </LinearLayout>

        <LinearLayout
                Android:orientation="horizontal"
                Android:layout_weight="1"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content">

            <TextView
                    Android:id="@+id/txtSelected02"
                    Android:text="00"
                    Android:textSize="30dp"
                    Android:gravity="center_horizontal"
                    Android:layout_weight="1"
                    Android:layout_width="0dp"
                    Android:layout_height="wrap_content"/>
        </LinearLayout>
    </LinearLayout>


    <Button
            Android:id="@+id/btn_deleteNum"
            Android:text="Delete"
            Android:textSize="20dp"
            Android:layout_weight="0.2"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"/>
</LinearLayout>
47
S.J. Lim

Ändern Sie die Ausrichtung und die Schwerkraft in

<LinearLayout
    Android:id="@+id/groupNumbers"
    Android:orientation="horizontal"
    Android:gravity="center_vertical"
    Android:layout_weight="0.7"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content">

zu 

Android:orientation="vertical"
Android:layout_gravity="center_vertical"

Sie fügen Orientierung hinzu: horizontal, sodass das Layout alle Elemente in einer horizontalen Linie enthält. Dadurch können Sie das Element nicht in die Mitte bringen.

Hoffe das hilft.

116
MysticMagicϡ

verwenden Sie Android:layout_gravity anstelle von Android:gravity

Android:gravity legt die Schwere des Inhalts der Ansicht fest, die für .Android:layout_gravity verwendet wird, und legt die Schwere der Ansicht oder des Layouts im übergeordneten Element fest.

26

Verwenden Sie layout_gravity anstelle von gravity. layout_gravity sagt dem übergeordneten Element, wo es positioniert werden soll, und gravity teilt seinem Kind mit, wo es positioniert werden soll.

<LinearLayout
    Android:id="@+id/groupNumbers"
    Android:orientation="horizontal"
    Android:layout_gravity="center_vertical"
    Android:layout_weight="0.7"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content">
6
Lawrence Choy

Für mich habe ich das Problem mit Android:layout_centerVertical="true" in einer übergeordneten RelativeLayout behoben:

<RelativeLayout ... >

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:orientation="vertical"
        Android:layout_centerVertical="true">

</RelativeLayout>
4
Mandy

Für eine Box, die in der Mitte angezeigt wird - horizontal und vertikal -, habe ich dies mit nur einem LinearLayout funktionieren lassen. Die Antwort von Viswanath L war sehr hilfreich

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_gravity="center"
    Android:background="@drawable/layout_bg"
    Android:gravity="center"
    Android:orientation="vertical"
    Android:padding="20dp">

    <TextView
        Android:id="@+id/dialog_header"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_gravity="center_horizontal"
        Android:padding="10dp"
        Android:text="Error"
        Android:textColor="#000" />

    <TextView
        Android:id="@+id/message_text"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_gravity="center_horizontal"
        Android:padding="10dp"
        Android:text="Error-Message"
        Android:textColor="#000" />


    <Button
        Android:id="@+id/dialogButtonOK"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_below="@+id/message_text"
        Android:layout_gravity="center_horizontal"
        Android:layout_marginTop="5dp"
        Android:text="Ok" />


</LinearLayout>
2
Gene Bo

verwenden Sie RelativeLayout in LinearLayout 

beispiel:

<LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="match_parent">
        <RelativeLayout
            Android:layout_width="match_parent"
            Android:layout_height="match_parent">
            <TextView
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:layout_centerVertical="true"
                Android:text="Status"/>
        </RelativeLayout>
</LinearLayout>
0

Verwenden Android:weightSum -Eigenschaft für das übergeordnete LinearLayout und geben Sie den Wert 3 ein. Verwenden Sie dann in den untergeordneten LinearLayout Android:layout_weight 2 bzw. 1. Verwenden Sie dann im ersten Chil LinearLayout Android:layout_gravity="center_vertical". Wie im folgenden Code gezeigt

<LinearLayout
                    Android:layout_width="match_parent"
                    Android:layout_height="wrap_content"
                    Android:weightSum="3"
                    Android:orientation="horizontal">

                    <LinearLayout
                        Android:layout_width="wrap_content"
                        Android:layout_height="wrap_content"
                        Android:layout_weight="2"
                        Android:layout_gravity="center_vertical"
                        Android:orientation="horizontal">
                        <TextView
                            Android:id="@+id/status_text"
                            Android:layout_width="wrap_content"
                            Android:layout_height="wrap_content"
                            Android:text="00"
                            Android:textColor="@color/red"
                            Android:textSize="@dimen/default_text_size"
                            />
                          <TextView
                            Android:id="@+id/status_text"
                            Android:layout_width="wrap_content"
                            Android:layout_height="wrap_content"
                            Android:text="00"
                            Android:textColor="@color/red"
                            Android:textSize="@dimen/default_text_size"
                            />
                    </LinearLayout>
                    <LinearLayout
                        Android:layout_width="wrap_content"
                        Android:layout_height="wrap_content"
                        Android:layout_weight="1">
                        <Button
                          Android:layout_width="fill_parent"
                          Android:layout_height="wrap_content"
                          Android:text="Delete"/>
                    </LinearLayout>
                </LinearLayout>
0