Android图像是从文件中以编程方式添加的,大小不正确
我有一个Android应用程序,它在可扩展的列表视图中显示数据集合。可展开列表视图只有一个子视图。在该子级中,我添加了几个TextView元素,最后一个元素之后是ImageView 这就是问题所在 如果我使用drawable文件夹设置图像资源,其显示如下:Android图像是从文件中以编程方式添加的,大小不正确,android,android-layout,android-image,android-resources,android-drawable,Android,Android Layout,Android Image,Android Resources,Android Drawable,我有一个Android应用程序,它在可扩展的列表视图中显示数据集合。可展开列表视图只有一个子视图。在该子级中,我添加了几个TextView元素,最后一个元素之后是ImageView 这就是问题所在 如果我使用drawable文件夹设置图像资源,其显示如下: R.drawable.test_image ImageView drinkImage = (ImageView) inflater.inflate(R.layout.drink_image, null, false); // FileStri
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);
但如果我以编程方式添加图像,如下所示:
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);
它显示如下:
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);
相同的文件。我从存储器中抓取了文件本身,并将其移动到我的可绘制文件夹中,然后以这种方式添加,效果非常好
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>
有什么想法吗
我在运行安卓4.1.1的Galaxy Nexus上运行这个,我不确定,因为图像可能很复杂,但是试试这个
<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" />
将没有上下文信息,因此无法正确缩放位图(因为它不知道屏幕密度等)
正如您在源代码中看到的,它将调用drawableFromBitmap(null,bm,null,null,pathName)
。第一个参数(null
)是资源引用
相反,请使用接收上下文
或资源
的构造函数,以便它可以正确地缩放它
检查
您可以看到,不接收资源的BitmapDrawable构造函数是。我已经尝试了所有不同的布局宽度和布局高度选项。这就是整个XML布局。我将其放大,并将其添加到可扩展列表视图中。将我的问题编辑为ExpandableListView。您的意思是使用BitmapDrawable吗?另一个构造函数?我很困惑。既然你知道它是一个位图,是的,我建议直接使用BitmapDrawable,这样你就可以传递资源了。如果您检查Drawable类的源代码,您将看到
Drawable.createFromPath
加载位图并调用,这也创建了BitmapDrawable。