为什么 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
并将其设置为 gravity
和 layout_gravity
为 right|center_vertical
和 center_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 属性,因为它们不需要。
这是我正在尝试的代码。但是 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
并将其设置为 gravity
和 layout_gravity
为 right|center_vertical
和 center_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 属性,因为它们不需要。