带有背景的ImageView在加载图像时会留下边距

时间:2012-07-26 09:53:52

标签: android android-layout android-imageview

我的imageview声明如下:

<ImageView
        android:id="@+id/category_image_top"
        android:layout_width="match_parent"
        android:layout_height="170dp"
        android:maxHeight="170dp"
        android:adjustViewBounds="true"
        android:scaleType="centerCrop"
        android:background="@drawable/image_placeholder"
        />

这就是我在asynctask中设置category_image_top的方法(在onPostExecute上)

imageView.setImageBitmap(image);

设置图像后,imageview突然获得4px的余量。但是当我从XML中删除android:background =“@ drawable / image_placeholder”时,一切都很好吗?!

BTW:image_placeholder是一个9补丁图像,如果这有任何区别。

为什么会这样?

更新:我尝试将背景设置为纯色,然后在加载图像时不会出现边距。我也试过放置另一个9补丁图像,当我这样做时,边缘再次出现。所以它必须是背景作为图像

UPDATE2:也许这是一个像这个家伙指出的安卓漏洞? https://stackoverflow.com/a/8340745/581531

3 个答案:

答案 0 :(得分:1)

我猜可以认为image_placeholder具有4px透明边距

答案 1 :(得分:1)

行。解决方案被发现,也许它不是最漂亮的,但嘿,它的工作! :)

在我看来,我刚刚添加了一个任意视图,它是我图像的持有者。最重要的是我有我的ImageView所以当图像加载占位符(视图)被覆盖。这是我的观点(或者至少是重要的一部分):

<FrameLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
         >

        <View 
            android:layout_width="match_parent"
            android:layout_height="210dp"
            android:background="@drawable/image_placeholder"
            />

        <ImageView
            android:id="@+id/article_image"
            android:layout_width="match_parent"
            android:layout_height="210dp"
            android:adjustViewBounds="true" 
            android:layout_gravity="center"
            android:scaleType="centerCrop"
            />
...

答案 2 :(得分:0)

包含图片视图的元素可能有边距,您检查过吗?

android:background="@drawable/image_placeholder"更改为android:src="@drawable/image_placeholder"

同时添加以下内容:android:scaleType="centerCrop"

如果centerCrop不起作用,请尝试列出here列出的其他内容。