我有一个Android应用程序,它在ExpandableListView中显示数据集合。可扩展列表视图只有一个子项。在那个孩子中,我添加了几个TextView元素,最后一个是ImageView。
ImageView是个问题。
如果我使用
R.drawable.test_image
从可绘制文件夹设置图像资源,则显示如下:
但是如果我以编程方式添加图像,就像这样:
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);
它显示如下:
相同的文件。我从存储中抓取了文件本身并将其移动到我的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上运行此功能
答案 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
)是资源引用。
相反,请使用接收Context
或Resources
的构造函数,以便它可以正确地缩放位图。
检查new BitmapDrawable(Resources res, String path)
您可以看到不接收资源的BitmapDrawable构造函数为deprecated。