0

我有以下布局:

在此处输入图像描述

<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"属性,它们会拉伸容器高度,并且会占用整个屏幕高度。

那么,我应该使用什么魔法来做到这一点呢?:)

4

3 回答 3

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>

于 2013-11-15T08:26:29.533 回答
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>
于 2013-11-15T08:23:42.807 回答
0

好的,根据上面 Damien R. 提供的提示,我通过执行以下操作成功完成了任务:

  • 使用RelativeLayout参数作为根layout_width="wrap_content"layout_height="wrap_content"
  • 用作LinearLayout容器的“包装器” RelativeLayoutlayout_weight这是因为我需要使用属性来布置这些容器。
  • RelativeLayout layout_height应该是fill_parent。无需在属性中使用android:layout_alignBottom="@id/..."and 。这只有在是another的孩子时才有效,但事实并非如此,因为我需要使用'weightandroid:layout_alignBottom="@id/..."RelativeLayoutRelativeLayoutViewRelativeLayoutLinearLayout

代码是:

<?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>
于 2013-11-15T11:47:39.787 回答