如何在布局中向右和中间对齐高度

how to align to right and middle in height in layout

我有一个S,是左对齐的一个布局, 我想将 TextView 对齐到它的右侧和它的高度的中间。 我做了两个示例图片来解释得更清楚。

这就是我所拥有的(其中 A 是 S,b 是 TextView):

这就是我想要实现的:

我的 s 布局代码是:

<Switch
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="CIR"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:checked="true"
        android:gravity="center"
        android:id="@+id/newProject_switch"
        android:layout_below="@+id/newProject_networkId"
        android:layout_marginTop="10dp"
        android:layout_alignParentLeft="true"
        />

我的 TextView 布局代码是:

<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Best Effort"
        android:textSize="15dp"
        android:id="@+id/textView2"
        android:layout_alignBottom="@+id/newProject_switch"
        android:gravity="right|center_vertical"
        android:layout_toRightOf="@+id/newProject_switch"
        />

将此行添加到您的文本视图

android:layout_centerVertical="true"

我已删除 android:layout_marginTop="10dp" 并将 android:layout_gravity="center_vertical" 添加到您的 Switch
并在 TextView

中将 android:gravity="right|center_vertical" 更改为 android:layout_gravity="right|center_vertical"
<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#e4e4e4"
        android:orientation="horizontal" 
        >
        <Switch
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="CIR"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:checked="true"
            android:gravity="center"
            android:id="@+id/newProject_switch"
            android:layout_below="@+id/newProject_networkId"
            android:layout_alignParentLeft="true"
            android:layout_gravity="center_vertical"
            />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="Best Effort"
            android:textSize="15dp"
            android:id="@+id/textView2"
            android:layout_alignBottom="@+id/newProject_switch"
            android:layout_gravity="right|center_vertical"
            android:layout_toRightOf="@+id/newProject_switch"
            />
    </LinearLayout>

这样使用。

删除您在 Switch 中设置的额外 Margin 并使用 android:gravity="center_vertical。并将 TextView 设置为 android:gravity="center_vertical|right" 使其位于右侧并垂直居中。

  <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <Switch
            android:id="@+id/newProject_switch"
            android:layout_width="wrap_content"
            android:layout_height="50dp"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:checked="true"
            android:gravity="center_vertical"
            android:text="CIR" />

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="50dp"
            android:layout_alignBottom="@+id/newProject_switch"
            android:layout_toRightOf="@+id/newProject_switch"
            android:gravity="center_vertical|right"
            android:text="Best Effort"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textSize="15dp" />
    </LinearLayout>