保持RelativeLayout高度尽可能小,但增加子高度以填充所有可用空间

时间:2010-12-25 16:15:24

标签: android height relativelayout

我的RelativeLayout包含几个不同高度的ImageView / TextView控件,例如20,70,35。控件连续排列。我希望它们将它们的高度扩展到最大控制高度的相同值,例如70.问题是,在我的布局中,RelativeLayout容器和所有控件都扩展到了屏幕高度。

    <RelativeLayout 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        >

        <ImageView 
            android:src="@drawable/image1" 
            android:background="#FFCCDDEE"
            android:layout_width="wrap_content" 
            android:layout_height="fill_parent"
            android:layout_centerVertical="true"
            android:layout_alignParentLeft="true"
            />

        <ImageView 
            android:src="@drawable/image2" 
            android:background="#FFCCDDEE"
            android:layout_width="wrap_content" 
            android:layout_height="fill_parent"
            android:layout_centerVertical="true"
            android:layout_centerInParent="true"
            />

        <ImageView 
            android:src="@drawable/image3" 
            android:background="#FFCCDDEE"
            android:layout_width="wrap_content" 
            android:layout_height="fill_parent"
            android:layout_centerVertical="true"
            android:layout_alignParentRight="true"
            />

    </RelativeLayout>

我可以将RelativeLayout高度设置为70,但考虑到我不知道前面的子控件大小。

我也可以使用LinearLayout实现所需的效果,但想使用RelativeLayout。

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        >

        <ImageView 
            android:src="@drawable/image1" 
            android:background="#FFCCDDEE"
            android:layout_width="wrap_content" 
            android:layout_height="fill_parent"
            android:gravity="center_vertical"
            />

        <ImageView 
            android:src="@drawable/image2" 
            android:layout_width="wrap_content" 
            android:layout_height="fill_parent"
            android:gravity="center_vertical"
            />

        <ImageView 
            android:src="@drawable/image3" 
            android:layout_width="wrap_content" 
            android:layout_height="fill_parent"
            android:gravity="center_vertical"
            />

    </LinearLayout>

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您是否考虑过使用填充/边距?

<RelativeLayout 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    >

    <ImageView 
        android:src="@drawable/image1" 
        android:background="#FFCCDDEE"
        android:layout_width="wrap_content" 
        android:layout_height="fill_parent"
        android:layout_centerVertical="true"
        android:layout_alignParentLeft="true"
        android:padding="70dip"
        />
    ....

XML应生成140 x 140的图像(我认为)。它不会是动态的,但是XML不能做那样的动态事情。

如果你想做一些更动态的事情,你可以编写能够提取所有元素大小的代码,找到最大的代码,然后将所有对象设置为该大小。

link可能对此有用。

祝你好运!