为什么我的相对布局占据全屏宽度

San*_*osh 7 android relativelayout

为什么我的相对布局占据全屏宽度

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#f00"
    >
    <Button  
        android:id="@+id/Button01"  
        android:text="Press Here"  
        android:layout_alignParentRight="true" 
        android:layout_width="wrap_content"   
        android:layout_height="wrap_content"></Button> 
     <Button  
        android:id="@+id/Button02"  
        android:text="02"  
        android:layout_alignParentLeft="true" 
        android:layout_width="wrap_content"   
        android:layout_height="wrap_content"></Button>  
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

我已经将相对布局指定为"wrap_content",那么为什么它会占据整个屏幕空间.即使我说android:layout_width ="fill_parent",输出也是一样的.开导

请赐教!

编辑:我想我之前对我的问题不太清楚.为此道歉.当我在一个相对布局中有2个子视图,其中一个与父对齐,而另一个是右对齐,相对布局宽度是WRAP_CONTENT,那么我预计布局宽度只是2个按钮宽度的总和(不是这就是WRAP_CONTENT的含义??).我知道有其他方法可以实现我正在寻找的UI,但我只是想正确地理解这些相对布局标签.

编辑2:我已经进行了一些实验,看起来如果我们使用Layout_AlighParentRight,其父级宽度为WRAP_CONTENT,则上部布局宽度用于计算(如下面指出的几个答案).但是我们只使用Layout_alignParentLeft然后它按预期工作,并且布局宽度没有扩展到整个屏幕.谢谢你的帮助!

ern*_*s7a 13

其他答案已正确指出,当您的相对布局宽度设置为wrap_content,并且其子项左右对齐时,相对布局将采用其父级的宽度 - 在本例中为整个屏幕.但是,如果两个孩子都在一侧对齐,那么相对布局将与最宽的孩子一样宽.

现在,如果您希望将两个按钮彼此相邻放置,并且相对布局与按钮宽度的总和一样宽,则需要稍微不同的方法.不是将两个按钮相对于父母定位,而是仅使用一个按钮(例如,第一个按钮).让我们说它的定位保持不变(android:layout_alignParentRight="true").现在按钮浮动到右侧,因此第二个按钮,为了位于它旁边,必须与第一个按钮的左侧对齐.因此,我们只需添加android:layout_toLeftOf="@id/Button01"(并删除android:layout_alignParentLeft="true"部分).

有关更多信息,我建议您查看一个非常友好的相对布局教程.

  • 谢谢 :).可以这样想:`wrap_content`意味着*和一个孩子的空间一样宽.*现在,如果你带一个孩子并说'alignParentRight`,它应该转到它的父母的最右边.但是父母有多宽?嗯,*和一个孩子的空间一样宽.*换句话说,父母将宽度决定留给孩子.孩子不受父母的束缚,所以他们一直走到最后 - 这是父母的容器. (3认同)