为什么我的相对布局占据全屏宽度
<?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>
我已经将相对布局指定为“wrap_content”,那么为什么它会占据整个屏幕空间.即使我说android:layout_width =“fill_parent”,输出也是一样的.
请赐教!
编辑:我想我之前对我的问题不太清楚.为此道歉.
当我在一个相对布局中有2个子视图,其中一个与父对齐,而另一个是右对齐,相对布局宽度是WRAP_CONTENT,那么我预计布局宽度只是2个按钮宽度的总和(不是这就是WRAP_CONTENT的含义??).我知道有其他方法可以实现我正在寻找的UI,但我只是想正确地理解这些相对布局标签.
编辑2:我已经尝试了一下,看起来如果我们使用Layout_AlighParentRight,其父级宽度为WRAP_CONTENT,那么上部布局宽度用于计算(如下面指出的几个答案).但是我们只使用Layout_alignParentLeft然后它按预期工作,并且布局宽度没有扩展到整个屏幕.谢谢你的帮助!
解决方法
其他答案正确地指出,当您的相对布局的宽度设置为wrap_content,并且其子项与左右对齐时,相对布局将采用其父级的宽度 – 在本例中为整个屏幕.但是,如果两个孩子都在一侧对齐,那么相对布局将与最宽的孩子一样宽.
现在,如果您希望将两个按钮彼此相邻放置,并且相对布局与按钮宽度的总和一样宽,则需要稍微不同的方法.不是将两个按钮相对于父按钮定位,而是仅使用一个按钮(例如,第一个按钮).假设它的位置保持不变(android:layout_alignParentRight =“true”).现在按钮浮动到右侧,因此第二个按钮,为了位于它旁边,必须与第一个按钮的左侧对齐.因此,我们只需添加android:layout_toLeftOf =“@ id / Button01”(并删除android:layout_alignParentLeft =“true”部分).
有关更多信息,建议您查看relative layouts上非常友好的教程.