Android 为什么TextView的布局重力在水平线性布局中不起作用?
这是我正在尝试的代码。但在水平线性布局中,具有布局权的textview不会向右移动Android 为什么TextView的布局重力在水平线性布局中不起作用?,android,android-xml,Android,Android Xml,这是我正在尝试的代码。但在水平线性布局中,具有布局权的textview不会向右移动 <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginRight="10dp"
<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>
使用相对布局
<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>
使用相对布局
<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>
将LinearLayout
更改为RelativeLayout
和android:layout\u gravity=“right”
更改为android:layout\u alignParentRight=“true”
。删除android:orientation=“horizontal”将LinearLayout
更改为RelativeLayout
,并将android:layout\u gravity=“right”
更改为android:layout\u alignParentRight=“true”
。移除android:orientation=“horizontal”
线性布局的所有子项都将依次堆叠。对于您的目标,您可以使用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>
空间
要求API级别14或更高。否则,您可以使用查看
线性布局的所有子项都将依次堆叠。对于您的目标,您可以使用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>
空间
要求API级别14或更高。否则,您可以使用View
只需将文本视图tvhomeinomethiswear
宽度更改为match\u parent
,并将其gravity
和layou gravity
分别设置为右侧|垂直中心
和垂直中心
:
<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" />
只需将文本视图tvhomeinomethiswear
宽度更改为match\u parent
,并将其gravity
和layout\u gravity
分别设置为right | center\u vertical
和center\u 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" />
实际上,您不需要将父视图更改为线性布局以外的其他视图,也不需要插入其他视图来充当分隔符等,只需向最左侧的文本视图添加一个值为“1”的layout\u weight
属性,并将其layout\u width
设置为零(0dp):
然后,您还可以删除TextView的两个android:layout\u gravity属性,因为它们不是必需的。您实际上不需要将父视图更改为线性布局以外的其他视图,或者插入其他视图作为间隔符等,只需将值为“1”的layout\u weight
属性添加到最左侧的TextView即可并将其layout\u width
设置为零(0dp):
然后,您还可以删除TextView的android:layout\u重力属性,因为它们不是必需的。谢谢您的回答。但是你能告诉我为什么会这样吗?我将一个孩子设置为左侧,另一个孩子设置为右侧,然后应该自动设置。这是LinearLayout的特殊行为。LinearLayout一个接一个地放大子视图,除了子视图的填充和边距之外,没有任何额外的空间。如果使用orientation=“horizontal”,则第一个视图的右边缘将始终与第二个视图的左边缘接触。在我的代码空间中,布局为\u weight=“1”,因此它将填充所有自由宽度。所以第一个文本视图的右边缘接触空间的左边缘,空间的右边缘接触第二个文本视图的左边缘。因此,主线布局没有任何缺口。
要求API级别14或更高。否则您可以使用
。谢谢您的回答。但是你能告诉我为什么会这样吗?我将一个孩子设置为左侧,另一个孩子设置为右侧,然后应该自动设置。这是LinearLayout的特殊行为。LinearLayout一个接一个地放大子视图,除了子视图的填充和边距之外,没有任何额外的空间。如果使用orientation=“horizontal”,则第一个视图的右边缘将始终与第二个视图的左边缘接触。在我的代码空间中,布局为\u weight=“1”,因此它将填充所有自由宽度。所以第一个文本视图的右边缘接触空间的左边缘,空间的右边缘接触第二个文本视图的左边缘。因此,主线布局没有任何缺口。
要求API级别14或更高。否则,您可以使用
。