1

我有一个像这样的简单代码:

LinearLayout mainLayout = (LinearLayout) findViewById(R.layout.main);
ImageView item = new ImageView(this);
item.setImageResource(R.drawable.logo);
mainLayout.addView(item);

ImageView 中的图像看起来有点模糊。似乎它从默认的可绘制文件夹而不是drawable-hdpi中选择图像。

因为当我在xml中设置相同的图像时,它看起来很完美。

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/logo" />

如何让 setImageResource 从正确的文件夹中选择图像?

谢谢你

4

3 回答 3

0

在清单中添加此代码:

 <supports-screens
        android:smallScreens="true"
        android:normalScreens="true"
        android:largeScreens="true"
        android:xlargeScreens="true" />
于 2013-11-13T05:24:18.447 回答
0

我不确定但是,这可能是因为您必须查看支持hdpi图形视图中分辨率的布局,并且以编程方式运行您的应用程序可能会以较低的分辨率运行您的应用程序,这可能是从drawable或其他文件夹不获取图像drawable-hdpi。这可能是原因。

于 2013-11-13T05:33:24.953 回答
0

setImageResource只要我在 SDK-17 上尝试过,就可以从正确的可绘制文件夹中选择图像。

我只是分别在 res/drawable、res/drawable-hdpi、res/drawable-xhdpi 文件夹中创建了三个同名的不同图片,并运行以下代码:

    setContentView(R.layout.activity_imageview);
    LinearLayout mainView = (LinearLayout) findViewById(R.id.main_view);
    ImageView iv = (ImageView) findViewById(R.id.image_view);
    iv.setImageResource(R.drawable.dataark);

    ImageView iv2 = new ImageView(this);
    iv2.setImageResource(R.drawable.dataark);
    mainView.addView(iv2);

在 xml(iv) 中添加的 ImageView 和以编程方式添加的 ImageView (iv2) 都从 res/drawable-xhdpi 加载图像,即三星 Galaxy Note 的正确文件夹。

所以很确定setImageResource确实从正确的可绘制文件夹中选择图像。

仅供参考,布局 xml 非常简单,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/image_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
    />

</LinearLayout>
于 2013-11-13T05:36:56.113 回答