为什么 TextView 的布局重力在水平 LinearLayout 中不起作用?

Why the layout gravity of TextView is not working in horizontal LinearLayout?

这是我正在尝试的代码。但是 layout_gravity 右边的 textview 在水平线性布局中没有向右移动。

<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:orientation="horizontal" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="50dp"
                android:layout_gravity="left"
                android:gravity="center_vertical"
                android:text="This Year"
                android:textColor="@color/gray_dark"
                android:textSize="18sp" />

            <TextView
                android:id="@+id/tvHomeIncomeThisYear"
                android:layout_width="wrap_content"
                android:layout_height="50dp"
                android:gravity="center_vertical"
                android:layout_gravity="right"
                android:text="[=10=].00 USD"
                android:textColor="#000000"
                android:textSize="18sp" />

        </LinearLayout>

使用相对布局

<RelativeLayout
   android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp">

    <TextView
            android:layout_width="wrap_content"
            android:layout_height="50dp"
            android:layout_gravity="left"
            android:gravity="center_vertical"
            android:text="This Year"
            android:textColor="@color/gray_dark"
            android:textSize="18sp" />

        <TextView
            android:id="@+id/tvHomeIncomeThisYear"
            android:layout_width="wrap_content"
            android:layout_height="50dp"
            android:gravity="center_vertical"
            android:layout_alignParentRight="true" 
            android:text="[=10=].00 USD"
            android:textColor="#000000"
            android:textSize="18sp" />
</RelativeLayout>

LinearLayout 更改为 RelativeLayout,将 android:layout_gravity="right" 更改为 android:layout_alignParentRight="true"。删除 android:orientation="horizontal".

LinearLayout 的所有子项一个接一个堆叠。为了您的目标,您可以使用 FrameLayout,或者您可以添加 space 作为另一个子视图对象:

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="50dp"
            android:layout_gravity="left"
            android:gravity="center_vertical"
            android:text="This Year"
            android:textColor="@color/gray_dark"
            android:textSize="18sp" />

        <Space
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1" />

        <TextView
            android:id="@+id/tvHomeIncomeThisYear"
            android:layout_width="wrap_content"
            android:layout_height="50dp"
            android:gravity="center_vertical"
            android:layout_gravity="right"
            android:text="[=10=].00 USD"
            android:textColor="#000000"
            android:textSize="18sp" />
 </LinearLayout>

Space 需要 API 14 级或以上。否则你可以使用 View.

只需将 TextView tvHomeIncomeThisYear 宽度更改为 match_parent 并将其设置为 gravitylayout_gravity right|center_verticalcenter_vertical 分别是:

        <TextView
            android:id="@+id/tvHomeIncomeThisYear"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:gravity="right|center_vertical"
            android:layout_gravity="center_vertical"
            android:text="[=10=].00 USD"
            android:textColor="#000000"
            android:textSize="18sp" />

您实际上不需要将父视图更改为 LinearLayout 以外的其他视图,或插入其他视图作为间隔等,只需在最左侧添加一个 layout_weight 属性值为“1”的 TextView 并将其 layout_width 设置为零 (0dp):

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:orientation="horizontal" >

    <TextView
        android:layout_width="0dp"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:gravity="center_vertical"
        android:text="This Year"
        android:textColor="@color/gray_dark"
        android:textSize="18sp" />

    <TextView
        android:id="@+id/tvHomeIncomeThisYear"
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:gravity="center_vertical"
        android:text="[=10=].00 USD"
        android:textColor="#000000"
        android:textSize="18sp" />

</LinearLayout>

您还可以删除两个 TextView 的 android:layout_gravity 属性,因为它们不需要。