Android图像以编程方式从文件中添加,未正确调整大小

时间:2013-12-31 19:48:58

标签: android android-layout android-image android-resources android-drawable

我有一个Android应用程序,它在ExpandableListView中显示数据集合。可扩展列表视图只有一个子项。在那个孩子中,我添加了几个TextView元素,最后一个是ImageView。

ImageView是个问题。

如果我使用

R.drawable.test_image
从可绘制文件夹设置图像资源,则显示如下:

Image added from Resource

但是如果我以编程方式添加图像,就像这样:

ImageView drinkImage = (ImageView) inflater.inflate(R.layout.drink_image, null, false);
// FileString is "/storage/sdcard0/.WhatToDrink/drinkImages/1388450237870.jpg" 
Drawable drinkImageDrawable = Drawable.createFromPath(fileString);

drinkImage.setImageDrawable(drinkImageDrawable);

它显示如下:

Added from file

相同的文件。我从存储中抓取了文件本身并将其移动到我的drawable文件夹中,然后按照这种方式添加它就完美无缺。

ImageView xml代码:

<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:contentDescription="Drink Image"
    android:id="@+id/drink_image"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

ExpandableListView XML代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.bluelimecrew.whattodrink.DrinkListActivity.DrinkListFragment">
    <LinearLayout
            android:id="@+id/listContainer"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:orientation="vertical">
        <ExpandableListView
                android:id="@+id/drinkList"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent">
        </ExpandableListView>
    </LinearLayout>

    <Button
            android:id="@+id/backToDashboard"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            style="@style/nextButtons"
            android:text="@string/backToDashboard" />
</LinearLayout>

有什么想法吗?

我在运行Android 4.1.1的Galaxy Nexus上运行此功能

2 个答案:

答案 0 :(得分:0)

不确定,因为图片可能很棘手,但试试这个

<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:contentDescription="Drink Image"
    android:id="@+id/drink_image"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />

答案 1 :(得分:0)

Drawable.createFromPath将没有上下文信息,因此无法正确缩放位图(因为它不知道屏幕密度等)。

正如您在源代码中看到的,它将调用drawableFromBitmap(null, bm, null, null, pathName)。第一个参数(null)是资源引用。

相反,请使用接收ContextResources的构造函数,以便它可以正确地缩放位图。

检查new BitmapDrawable(Resources res, String path)

您可以看到不接收资源的BitmapDrawable构造函数为deprecated