当父级大小在运行时更改时,带有LayoutParams的ImageView match_parent与父级不匹配

时间:2014-08-24 08:56:12

标签: android android-layout android-relativelayout

我有一个imageview,我想填充它的父RelativeLayout作为背景图像。

图像是正确的大小,直到相对布局中的其他视图扩展,从而扩展整个布局的大小(在我的情况下只是高度)(即:来自互联网的大字符串已加载到textView中)。然后图像视图不会增长以继续匹配父项。是预期的行为,如果是这样,我们如何解决它?

这是我的布局代码:

<?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:id="@+id/parentLayout">
<my.BlurredImageView
    android:scaleType="centerCrop"
    android:id="@+id/profile_bg"
    ImageUrl= "Avatar"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentBottom="true"
 />
 <LOTS AND LOTS OF OTHER VIEWS>

1 个答案:

答案 0 :(得分:0)

好的我确定你已经知道了,但为了彻底,我想我应该提一下,设置相对布局背景的最简单方法是直接在后台字段中:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="drawable file or file from internet you load programatically"
    android:id="@+id/parentLayout">

现在回答你的问题。如果由于某种原因你真的需要一个imageView作为背景,那么使用宽度和高度为0dp,因为你在所有4个边上都与父对齐。看看这是否有所不同:

<my.BlurredImageView
    android:scaleType="centerCrop"
    android:id="@+id/profile_bg"
    ImageUrl= "Avatar"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentBottom="true"
    />

要检查图像视图的实际大小,以及是否填充相对布局,最实用的方法是使RelativeLayout的背景变为亮绿色,并使imageView的背景变为亮橙色。然后你总能知道它们的确切位置: - )