在FrameLayout中拉伸图像以匹配相邻元素的高度?

时间:2011-04-20 16:50:14

标签: android layout height imageview android-framelayout

RelativeLayout中高度设置为fill_parent的ImageView实例将像RelativeLayout一样拉伸。例如。如果同一布局中的EditText为10行高,则图像将拉伸至10行高。

如何在FrameLayout中复制此行为?无论FrameLayout中其他项的高度如何,设置为fill_parent的图像高度似乎与wrap_content相同。

我更愿意在XML中完全处理这个问题。

2 个答案:

答案 0 :(得分:2)

FrameLayout将所有子视图叠加在同一区域。根据您的设置,您可以更改视图的显示方式。根据Android的FrameLayout

  

框架布局的大小是   最大的孩子的大小(加上   填充),可见或不可见(如果   FrameLayout的父级允许)。

此外,来自Common Layout Objects

  

FrameLayout是最简单的类型   布局对象。这基本上是一片空白   您可以在屏幕上留出空间   后来用一个对象填充 - for   例如,您将要交换的图片   然后出去所有儿童元素   FrameLayout固定在左上角   屏幕的一角;你不能   为a指定不同的位置   儿童观。后续子视图   将简单地绘制在以前   一些,部分或完全模糊   他们(除非新的对象是   透明的)。

在您的示例中,无论使用FrameLayout还是fill_parentwrap_content中的图片都不会被拉伸到其最大兄弟的尺寸。

答案 1 :(得分:2)

我发现了一个(可能是黑客)解决方法 - 在LinearLayout中包装FrameLayout让我将FrameLayout设置为fill_parent,因此它的子节点可以相应地伸展。所以:

<LinearLayout
orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <FrameLayout
        android:measureAllChildren="true"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <EditText
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
        <ImageView
            android:src="@drawable/image"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:scaleType="fitXY"
            android:layout_gravity="right|center_vertical" />
    </FrameLayout>
</LinearLayout>
<RelativeLayout ... >
    ... other stuff ...
</RelativeLayout>
</LinearLayout>

ImageView将延伸到EditText的高度。