2012-09-20 28 views
0

我有一個加載一些遠程圖像的佈局的應用程序。當加載遠程圖像時,正在顯示一個高度爲100的時鐘(我從它從圖像視圖覆蓋onDraw),當遠程圖像下載並準備顯示時,時鐘消失,然後圖像出現。使視圖無效的問題

它可以工作,但是當圖像顯示沒有收到正確的高度時,它仍然具有時鐘高度(100)。

我不知道爲什麼,因爲當圖像顯示時,它會調用一個處理程序來刷新圖像的視圖和圖像的容器佈局(365),但它不能正常工作。

這是處理程序:

Handler handler = new Handler(){ 
     @Override 
     public void handleMessage(Message msg) {     
      super.handleMessage(msg); 
      if(((ImageView)view) != null && resource != null && resource.image != null){ 
       ((ImageView)view).setImageBitmap(resource.image);         
       view.getLayoutParams().height=height; 
       ((ViewGroup)view.getParent()).getLayoutParams().height=height; 
       ((ImageView)view).invalidate(); 
       ((ViewGroup)view.getParent()).invalidate(); 
       ((ViewGroup)view.getParent()).refreshDrawableState(); 
       view.invalidate();      
      } 
     }   
    }; 

該處理程序被調用時,正在顯示的圖像,在處理程序中的高度值是否正確(365),但是圖像仍然與所述高度顯示的時鐘(100)。

另外我必須說,如果我阻止屏幕並取消屏蔽屏幕,圖像出現在正確的高度(365)。看起來invalidate()有問題。

感謝所有

+0

如何在設置視圖的高度後設置imageBitmap? – PH7

+0

PH7沒有意義,也沒有工作 – NullPointerException

+0

我相信你的處理程序不知道你的看法是什麼。在您的視圖中設置一個標籤(在進行任何更新之前),然後在處理程序上打印視圖的標籤。 –

回答

0

解決

我必須每次我加載圖像元件reinstanciate視圖:

視圖=新FocusableImageView(活性);