2013-02-13 24 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); 
相關問題