0

我在 XML 中有一个 ImageView 定义,如下所示:

        <ImageView
            android:id="@+id/background"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="centerCrop"/>   

我正在尝试根据某些用户操作(他们从库中选择图像)在代码中动态设置图像内容。我使用以下代码设置图像:

    ImageView bgView = (ImageView)root.findViewById(R.id.background);
    Drawable d = Drawable.createFromPath(wallpaper);
    bgView.setImageDrawable(d);

调用此代码对 ImageView 实例没有立即影响。但是,如果我将某种图像放入 XML 定义中,例如:

        <ImageView
            android:id="@+id/background"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="centerCrop"
            android:src="@drawable/test_image"/> 

它工作正常。有谁知道问题的原因可能是什么?我已经验证了图像设置代码在 UI 线程上运行,并且创建的 Drawable 是有效的。问题感觉可能与未正确执行布局以反映添加的图像有关?

4

2 回答 2

1

尝试:

ImageView bgView = (ImageView)root.findViewById(R.id.background);
Drawable d = Drawable.createFromPath(wallpaper);
// check d != null
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
bgView.setImageDrawable(d);
于 2013-02-13T14:44:49.470 回答
0

因此,经过更多挖掘后,我弄清楚了问题所在。在设置空图像的情况下(即在用户设置中未找到自定义背景时的默认状态),我的代码在加载视图时执行 .setImageDrawable(null) 。删除它似乎可以解决问题。

于 2013-02-13T15:36:07.367 回答