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



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

<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="$0.00 USD"
                android:textColor="#000000"
                android:textSize="18sp" />
        </LinearLayout>

LinearLayout 的所有子项都一个接一个地堆叠。对于您的目标,您可以使用 FrameLayout,也可以添加空间作为另一个子视图对象:

<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="$0.00 USD"
            android:textColor="#000000"
            android:textSize="18sp" />
 </LinearLayout>

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

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

使用相对布局使用它

<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="$0.00 USD"
            android:textColor="#000000"
            android:textSize="18sp" />
</RelativeLayout>

只需将 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="$0.00 USD"
            android:textColor="#000000"
            android:textSize="18sp" />

您实际上不需要将父视图更改为 LinearLayout 以外的其他视图,或者插入其他视图以充当间隔符等,只需将值为"1"的 layout_weight 属性添加到最左侧的 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="$0.00 USD"
        android:textColor="#000000"
        android:textSize="18sp" />
</LinearLayout>

然后,您还可以删除 TextView 的 android:layout_gravity 属性,因为它们不是必需的。

最新更新