加载的位图不会缩放到容器大小

时间:2014-04-14 02:51:22

标签: android android-layout bitmap imageview size

我有一个ListView项目,它使用Drawable作为默认图标,如果指定了图标,则允许覆盖。当我为指定的图标加载Bitmap并将其设置为包含默认Drawable项的ImageView时,指定图标的大小要小得多。

Drawable和指定的Icon都是128px x 128px所以我“假设”它们在加载时都是相同的大小。

这是问题的截图。

Screenshot of issue

这是ListItem的XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="6dip" >

    <ImageView
        android:id="@+id/events1_lv1_listitem_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="6dip"
        android:contentDescription="@string/content_description_default_text"
        android:src="@drawable/calendar" />

    <LinearLayout 
        android:orientation="vertical" 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <TextView
            android:id="@+id/events1_lv1_listitem_headline"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:contentDescription="@string/content_description_default_text"
            android:gravity="center_vertical"
            android:textSize="16sp" />

        <TextView
            android:id="@+id/events1_lv1_listitem_summary"
            android:layout_width="fill_parent"
            android:layout_height="26dip"
            android:contentDescription="@string/content_description_default_text"
            android:ellipsize="marquee"
            android:singleLine="true"
            android:textSize="12sp" />
    </LinearLayout>

</LinearLayout>

以下是我将位图加载到列表项图标中的代码段:

File headerImageFile = new File(src);
Bitmap image = BitmapFactory.decodeStream(new FileInputStream(headerImageFile));
events1_lv1_listitem_icon.setImageBitmap(image);

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

避免使用wrap_content。将图像大小设置为dp,并将scaleType设置为“fitXY”。
以下内容适用于你*

<ImageView
        android:id="@+id/events1_lv1_listitem_icon"
        android:layout_width="128dp"
        android:layout_height="128dp"
        android:scaleType="fitXY"
        android:layout_marginRight="6dp"
        android:contentDescription="@string/content_description_default_text"
        android:src="@drawable/calendar" />

答案 1 :(得分:0)

无法看到你的屏幕截图。

如果您的图标为128px * 128px,则可以将layout_widthlayout_height设置为128px,然后将scaleType设置为fitXYcenterCrop。像这样:

 <ImageView
        android:id="@+id/events1_lv1_listitem_icon"
        android:layout_width="128px"
        android:layout_height="128px"
        android:scaleType="fitXY"
        android:layout_marginRight="6dip"
        android:contentDescription="@string/content_description_default_text"
        android:src="@drawable/calendar" />

关于scaleType的含义,您可以看到this link