如何在线性布局中定位按钮

时间:2014-03-12 16:50:49

标签: android android-layout

我在水平LinearLayout中有两个按钮。他们目前彼此相邻,最左边。我想将第二个按钮移动到LinearLayout的右端。 我在这些按钮上尝试了android:gravity,但这并没有改变它们的位置。 感谢

6 个答案:

答案 0 :(得分:2)

使用LinearLayout无法实现此目的 请改用RelativeLayout,并将每个按钮相对于RelativeLayout向右或向左放置。类似下面的例子:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:text="Button" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/button1"
        android:layout_alignParentRight="true"
        android:text="Button" />

</RelativeLayout>

答案 1 :(得分:2)

最简单的方法是使用RelativeLayout。您可以在属性Button的右侧提供您想要的alignParentRight="true"

<Button
    ...
    android:layout_alignParentRight="true"/>

对于水平LinearLayoutandroid:layout_graivty(这是您想要的而不是android:gravity)左右不会做任何事情,因为Views是已经从右到左放置。

See this answer如果您不确定android:gravityandroid:layout_gravity之间的差异,请{/ 3>}。

修改

根据完全您需要/想要的内容, 可以使用LinearLayout执行此操作,但使用{可能仍然更容易和更灵活{1}}。无论如何,您可以使用RelativeLayout来实现类似的功能并使用值。以下内容为左侧weight,右侧为Button

Button

答案 2 :(得分:1)

尝试将左键的layout_gravity设置为left(或start),将右键的layout_gravity设置为right(或end

问题是您目前正在使用gravity

  

指定对象如何在其自己的边界内在X轴和Y轴上定位其内容。

相反,您应该使用

layout_gravity
  

儿童向其父母提供的标准重力常数。定义子视图在其封闭布局中在X轴和Y轴上的定位方式。

换句话说 - 您当前正在告诉按钮如何对齐他们的子视图,而不是告诉他们如何在父视图中对齐。

答案 3 :(得分:0)

您可以设置android:layout_weight='1'并且两个按钮将平等地共享屏幕(并排)或者如果您想要它们之间的额外空间,您可以将每个按钮放置在线性布局中并设置{{ 1}}每个android:layout_gravityleft

答案 4 :(得分:0)

添加RelativeLayout并将值设置为layout_marginLeftlayout_marginTop等。

例如。     android:layout_marginLeft="32dp" android:layout_marginTop="160dp"

答案 5 :(得分:0)

使 linearLayout 方向 Vertical 并设置按钮的重力 => center 并根据需要..