按钮:gravity =“right”不起作用

时间:2013-09-18 10:34:01

标签: android xml

我正在设计一个xml

<?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="match_parent"
    android:orientation="vertical" >



    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.05"
        android:background="#000000"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btncancel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="left|center"
            android:background="#CCCCCC"
            android:text="Cancel" />

        <Button
            android:id="@+id/btnadd"
            android:layout_width="82dp"
            android:layout_height="wrap_content"
            android:gravity="right"
            android:background="#3399FF"
            android:text="Add" />

    </LinearLayout>
</LinearLayout>

对于按钮“添加”android:gravity = right不工作。我给出了一个布局:margin,然后只有它正在移动。任何人都可以帮助我。

7 个答案:

答案 0 :(得分:3)

有点不清楚你想要什么,但请注意以下几点:

  • gravity会影响窗口小部件的内容,即您的按钮文字。

  • layout_gravity会影响小部件在父级布局中的定位

因此,如果您希望按钮位于右侧,请将gravity更改为layout_gravity

答案 1 :(得分:2)

使用RelativeLayout代替LinearLayout

并将android:layout_alignParentRight="true"用于btnadd。

编辑:

代码:

<RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.05"
        android:background="#000000"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btncancel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="left|center"
            android:background="#CCCCCC"
            android:text="Cancel" />

        <Button
            android:id="@+id/btnadd"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_gravity="right"
            android:background="#3399FF"
            android:text="Add" />
    </RelativeLayout>

答案 2 :(得分:2)

将LinearLayout更改为RelativeLayout

而不是android:gravity =“right”使用android:layout_alignParentRight="true"

答案 3 :(得分:0)

这是因为你使用LinearLayout(水平方向) 尝试使用相对布局

答案 4 :(得分:0)

您在线性布局中使用线性布局,您的布局取决于您使用垂直方向的方向: 使用相对布局来解决您的问题,并给出您想要的边距 也可以正确使用按钮:

android:layout_alignParentRight="true"

你的问题肯定会被解决。

答案 5 :(得分:0)

这是因为您在线性布局中使用android:orientation="horizontal" 使用此android:orientation="vertical"

或使用此我修改了您的代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<RelativeLayout
    android:id="@+id/RelativeLayout1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="0.05"
    android:background="#000000"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/btncancel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:background="#CCCCCC"
        android:text="Cancel" />

    <Button
        android:id="@+id/btnadd"
        android:layout_width="82dp"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:background="#3399FF"
        android:text="Add" />

</RelativeLayout>

答案 6 :(得分:0)

如果你想达到这样的目的:

enter image description here

您可以使用RelativeLayout或LinearLayout。

对于LinearLayout,您明确地在按钮之间添加空格。这是因为android:layout_gravity仅将视图定位在LinearLayout给出的空间内。这个空间不是LinearLayout本身,而是所有视图的总和,它们是线性排列的(如名称所示)。

这是我放两个按钮的方式:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >

    <Button
        android:id="@+id/btnadd"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Add" />

    <ImageView
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:src="@android:color/transparent" />

    <Button
        android:id="@+id/btncancel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Cancel" />

</LinearLayout>

我总是喜欢LinearLayout而不是RelativeLayout,因为我体验到LinearLayout更强大,特别是在Android的2.x版本上。

BTW:android:layout_gravityandroid:gravity之间的差异:

  • layout_gravity告诉视图的父布局,将整个视图定位在布局定义的边界内。在LinearLayout的情况下,这是通过一个接一个地线性放置视图而分配的空间。
  • gravity告诉视图将其前景定位在可用空间内。您可能已经看到,Add-Button已在右侧显示了文字。