-1

我正在设计一个 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,然后只有它向右移动。任何人都可以帮助我。

4

7 回答 7

3

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

  • gravity影响小部件的内容,即您的按钮文本。

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

因此,如果您希望按钮位于右侧,请更改gravitylayout_gravity.

于 2013-09-18T10:39:10.220 回答
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>
于 2013-09-18T10:40:20.450 回答
2

将 LinearLayout 更改为 RelativeLayout

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

于 2013-09-18T10:40:43.780 回答
0

如果你想实现这样的目标:

在此处输入图像描述

您可以使用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 版本上。

android:layout_gravity顺便说一句:和之间的区别android:gravity

  • 告诉视图的layout_gravity父布局将整个视图定位在布局定义的范围内。在 LinearLayout 的情况下,这是通过将视图一个接一个线性放置而分配的空间。
  • 告诉视图将gravity其前景定位在可用空间内。您可能已经看到,您Add-Button在右侧显示了文本。
于 2013-09-18T11:28:37.943 回答
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>

于 2013-09-18T10:56:00.087 回答
0

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

于 2013-09-18T10:37:29.800 回答
0

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

android:layout_alignParentRight="true"

你的问题肯定会用这个解决。

于 2013-09-18T10:48:28.403 回答