2013-02-13 61 views
0

我有一个的ImageView在XML定义像如下:setImageDrawable效果而不现有内容

 <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定义中,如下所示:

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

+0

bgView.setImageDrawable(R.drawable.test_image)的作品? – Leonidos 2013-02-13 14:43:27

+0

对不起,忘了提。即使我从/ res/drawable文件夹中放入drawable,setImageDrawable调用也不会执行任何操作,除非在XML中定义了现有的内容。 – TaylorP 2013-02-13 14:44:30

+0

我认为更多的代码可能有助于这种情况。 setImageDrawable工作正常,无需在XML中设置drawable。我假设有些事情可能会影响你的结果,这不是发布代码的一部分。 – dymmeh 2013-02-13 14:58:00

回答

0

所以我想通了什么问题是,更多的是挖掘一下后。在设置空图像的情况下(即,在用户设置中未找到自定义背景时的默认状态),当视图加载时,我的代码会执行.setImageDrawable(null)。删除这似乎解决了这个问题。

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); 
相关问题