水平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.Space
或android.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”