3

我的 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" 一切都很好?!

顺便说一句:image_placeholder 是一个 9-patch 图像,如果这有什么不同的话。

任何想法为什么会发生这种情况?

更新:我尝试将背景设置为纯色,然后在加载图像时没有出现边距。我还尝试放置另一个 9-patch 图像,当我这样做时,边距再次出现。所以它必须是有背景的东西作为图像

UPDATE2:也许这是一个像这个人指出的安卓错误?https://stackoverflow.com/a/8340745/581531

4

3 回答 3

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"
            />
...
于 2012-07-26T20:59:48.463 回答
1

我可以猜到 image_placeholder 有 4px 透明边距

于 2012-07-26T09:54:56.027 回答
0

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

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

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

如果 centerCrop 不起作用,请尝试此处列出的其他方法。

于 2012-07-26T09:55:23.733 回答