我有以下布局:
<LinearLayout //container, should adjust height based on CONTENT view height
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:baselineAligned="false"
android:clickable="false"
android:padding="20dp">
<RelativeLayout //this is the CONTENT view height
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="5">....</RelativeLayout>
...
<RelativeLayout //this is the button layout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2">
<Button android:layout_width="40sp" android:layout_height="40sp"/>
<Button android:layout_width="40sp" android:layout_height="40sp"/>
</RelativeLayout>
</LinearLayout>
我希望调整容器的高度(LinearLayout
)以包含RelativeLayout
中的所有视图(如左图所示,我们称之为 CONTAINER )
然后,RelativeLayout
中有两个按钮(如右图所示)。我需要相应地在RelativeLayot
的顶部和底部边框上对齐它们。真正重要的是,按钮容器的高度应与 CONTAINER 的高度相同(应对应)。
问题是,如果我尝试使用按钮的android:layout_alignParentBottom="true"
和android:layout_alignParentTop="true"
属性,它们将拉伸容器高度,它将占据整个屏幕高度。
那么,我应该用什么魔法来做这个伎俩? :)
答案 0 :(得分:1)
尝试将右侧相对布局的顶部和底部对齐到左侧。 尝试这样的事情:
<RelativeLayout //container, should adjust height based on CONTENT view height
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:baselineAligned="false"
android:clickable="false"
android:padding="20dp">
<RelativeLayout //this is the CONTENT view height
android:id="@+id/contentRL"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="5"
android:layout_alignParentLeft="true">....</RelativeLayout>
...
<RelativeLayout //this is the button layout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:layout_alignTop="@id/contentRL"
android:layout_alignBottom="@id/contentRL"
android:layout_alignParentRight="true">
<Button android:layout_width="40sp"
android:layout_height="40sp"
android:layout_alignParentTop="true"/>
<Button android:layout_width="40sp"
android:layout_height="40sp"
android:layout_alignParentBottom="true"/>
</RelativeLayout>
答案 1 :(得分:0)
使用此
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:baselineAligned="false"
android:clickable="false"
android:padding="20dp">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="5"></RelativeLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="2">
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"/>
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"/>
</RelativeLayout>
</LinearLayout>
答案 2 :(得分:0)
好的,基于上面Damien R.提供的提示,我通过以下方式成功完成了任务:
RelativeLayout
作为参数layout_width="wrap_content"
,layout_height="wrap_content"
LinearLayout
作为容器RelativeLayout
周围的“包装器”。这是因为我需要使用layout_weight
属性来布置这些容器。 RelativeLayout
layout_height
应为fill_parent
。无需在android:layout_alignBottom="@id/..."
属性中使用android:layout_alignBottom="@id/..."
和RelativeLayout
。这仅在RelativeLayout
是另一个View
的孩子RelativeLayout
时才有效,而事实并非如此,因为我需要使用LinearLayout
的权重代码是:
<?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:baselineAligned="false"
android:clickable="false"
android:padding="10dp">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/ticketbackground"
android:id="@+id/ticket_layout"
>
<RelativeLayout
android:id="@+id/contentRL"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="5"
android:layout_alignParentLeft="true">
</RelativeLayout>
<!--second column-->
<RelativeLayout
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="3">
...
</RelativeLayout>
<!--third column with buttons-->
<RelativeLayout
android:id="@+id/sdfsdf"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="2">
<Button...
android:layout_alignParentTop="true" />
<Button...
android:layout_alignParentBottom="true" />
</RelativeLayout>
</LinearLayout>
</RelativeLayout>