水平LinearLayout中右alignmentbutton

只是一个愚蠢的问题。 如果你看看附加的图像。 我需要我的button是正确的alignment,但由于某种原因,它不是与'重力:右'…

在这里输入图像说明

这是我的代码布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="35dp"> <TextView android:id="@+id/lblExpenseCancel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/cancel" android:textColor="#404040" android:layout_marginLeft="10dp" android:textSize="20sp" android:layout_marginTop="9dp" /> <Button android:id="@+id/btnAddExpense" android:layout_width="wrap_content" android:layout_height="45dp" android:background="@drawable/stitch_button" android:layout_marginLeft="10dp" android:text="@string/add" android:layout_gravity="right" android:layout_marginRight="15dp" /> </LinearLayout> 

为什么不工作? 多谢你们…

使用以下代码

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="35dp" android:orientation="horizontal" > <TextView android:id="@+id/lblExpenseCancel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginTop="9dp" android:text="@string/cancel" android:textColor="#404040" android:textSize="20sp" /> <Button android:id="@+id/btnAddExpense" android:layout_width="wrap_content" android:layout_height="45dp" android:layout_alignParentRight="true" android:layout_marginLeft="10dp" android:layout_marginRight="15dp" android:background="@drawable/stitch_button" android:text="@string/add" /> </RelativeLayout> 

单个LinearLayout解决scheme。 只添加一个简单的间距视图:
(似乎没有人提到过这个,只有更复杂的多布局解决scheme。)

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="35dp"> <TextView android:id="@+id/lblExpenseCancel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/cancel" android:textColor="#404040" android:layout_marginLeft="10dp" android:textSize="20sp" android:layout_marginTop="9dp" /> <!------------------------- ADDED SPACER VIEW --------------------> <View android:layout_width="0dp" android:layout_height="0dp" android:layout_weight="1" /> <!------------------------- /ADDED SPACER VIEW --------------------> <Button android:id="@+id/btnAddExpense" android:layout_width="wrap_content" android:layout_height="45dp" android:background="@drawable/stitch_button" android:layout_marginLeft="10dp" android:text="@string/add" android:layout_gravity="right" android:layout_marginRight="15dp" /> </LinearLayout> 

注意“高亮”视图,我没有修改任何其他的东西。 高度= 0确保它不可见。 宽度= 0是因为宽度是由LinearLayout根据weight = 1确定的。 这意味着间隔视图将在LinearLayout的方向(方向)上尽可能伸展。

请注意,如果您的API级别和/或依赖关系允许, 您应该使用android.widget.Spaceandroid.support.v4.widget.Space而不是View Space以更便宜的方式实现了工作,因为它只是测量,并不试图画像View东西; 传达意图也更具performance力。

我知道这个问题是前一阵子问过的,但是我之前做过这个,在alignment项目时允许更多的控制。如果你把它看作networking编程,它会有帮助。 你只需嵌套另一个LinearLayout ,它将包含你的button。 然后,您可以更改button的布局的重力,并使其在TextView仍然在左侧时向右移动。

试试这个代码:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="35dp"> <TextView android:id="@+id/lblExpenseCancel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/cancel" android:textColor="#404040" android:layout_marginLeft="10dp" android:textSize="20sp" android:layout_marginTop="9dp"/> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="right" android:orientation="horizontal" > <Button android:id="@+id/btnAddExpense" android:layout_width="wrap_content" android:layout_height="45dp" android:background="@drawable/stitch_button" android:layout_marginLeft="10dp" android:text="@string/add" android:layout_gravity="right" android:layout_marginRight="15dp"/> </LinearLayout> 

您可能需要使用嵌套布局上的填充,以便按照您的需要进行操作。

试试这个

  <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_gravity="right" android:layout_height="wrap_content" android:orientation="horizontal" > <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/lblExpenseCancel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginTop="9dp" android:text="cancel" android:textColor="#ffff0000" android:textSize="20sp" /> <Button android:id="@+id/btnAddExpense" android:layout_width="wrap_content" android:layout_height="45dp" android:layout_alignParentRight="true" android:layout_marginLeft="10dp" android:layout_marginRight="15dp" android:textColor="#ff0000ff" android:text="add" /> </RelativeLayout> </LinearLayout> 

正如之前提到的几次:从LinearLayout切换到RelativeLayout的工作,但你也可以解决问题,而不是避免它。 使用LinearLayout提供的工具:给TextView一个权重= 1(见下面的代码),你的button的权重应该保持为0或没有。 在这种情况下,TextView将会占用所有剩余的空间,而这些空间并不用于显示TextView或ButtonView的内容,并将button向右移动。

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="35dp"> <TextView android:id="@+id/lblExpenseCancel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/cancel" android:textColor="#404040" android:layout_marginLeft="10dp" android:textSize="20sp" android:layout_marginTop="9dp" **android:layout_weight="1"** /> <Button android:id="@+id/btnAddExpense" android:layout_width="wrap_content" android:layout_height="45dp" android:background="@drawable/stitch_button" android:layout_marginLeft="10dp" android:text="@string/add" android:layout_gravity="right" android:layout_marginRight="15dp" /> </LinearLayout> 

您需要将重力添加到布局而不是button,重力button设置是button内的文本

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_gravity="right" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="35dp"> 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="35dp"> <TextView android:id="@+id/lblExpenseCancel" android:layout_width="0dp" android:layout_weight="0.5" android:layout_height="wrap_content" android:text="@string/cancel" android:textColor="#404040" android:layout_marginLeft="10dp" android:textSize="20sp" android:layout_marginTop="9dp"/> <Button android:id="@+id/btnAddExpense" android:layout_width="0dp" android:layout_weight="0.5" android:layout_height="wrap_content" android:background="@drawable/stitch_button" android:layout_marginLeft="10dp" android:text="@string/add" android:layout_gravity="right" android:layout_marginRight="15dp"/> </LinearLayout> 

这将解决您的问题

真正的解决scheme:

android:layout_weight="1"为TextView,你的button移动到正确的!

我用4个TextView使用了一个类似的布局。 两个TextView应该alignment到左边,两个TextView应该alignment到右边。 所以,这是我的解决scheme,如果你想单独使用LinearLayouts

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:baselineAligned="false" android:padding="10dp" > <LinearLayout android:layout_width="0dip" android:layout_weight="0.50" android:layout_height="match_parent" android:gravity="left" android:orientation="horizontal" > <TextView android:id="@+id/textview_fragment_mtfstatus_level" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/level" android:textAppearance="?android:attr/textAppearanceMedium" /> <TextView android:id="@+id/textview_fragment_mtfstatus_level_count" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:textAppearance="?android:attr/textAppearanceMedium" /> </LinearLayout> <LinearLayout android:layout_width="0dip" android:layout_weight="0.50" android:layout_height="match_parent" android:gravity="right" android:orientation="horizontal" > <TextView android:id="@+id/textview_fragment_mtfstatus_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/time" android:textAppearance="?android:attr/textAppearanceMedium" /> <TextView android:id="@+id/textview_fragment_mtfstatus_time_count" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:textAppearance="?android:attr/textAppearanceMedium" /> </LinearLayout> </LinearLayout> 

您可以在Button的父布局上使用RelativeLayout或设置gravity =“right”。

我知道这是旧的,但这是另一种线性布局将是:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="35dp"> <TextView android:id="@+id/lblExpenseCancel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/cancel" android:textColor="#404040" android:layout_marginLeft="10dp" android:textSize="20sp" android:layout_marginTop="9dp" /> <Button android:id="@+id/btnAddExpense" android:layout_width="wrap_content" android:layout_height="45dp" android:background="@drawable/stitch_button" android:layout_marginLeft="10dp" android:text="@string/add" android:layout_gravity="center_vertical|bottom|right|top" android:layout_marginRight="15dp" /> 

请注意layout_gravity而不仅仅是重力。

您应该使用Relativelayout而不是Linearlayout作为主布局。 如果您使用Relativelayout作为主,那么轻松处理右侧的button,因为相对布局提供了alignParent右,左,上和下。

只要添加android:gravity =“right”这行父母布局这将工作。

 <LinearLayout android:id="@+id/withdrawbuttonContainer" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:background="@color/colorPrimary" android:orientation="horizontal" **android:gravity="right"** android:weightSum="5" android:visibility="visible"> <Button android:id="@+id/bt_withDraw" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="@string/BTN_ADD" app:delay="1500" /> <Button android:id="@+id/btn_orderdetail_amend" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="@string/BTN_CANCEL" app:delay="1500" /> </LinearLayout> 

在button中使用布局宽度,如android:layout_width =“75dp”