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()有問題。
感謝所有
如何在設置視圖的高度後設置imageBitmap? – PH7
PH7沒有意義,也沒有工作 – NullPointerException
我相信你的處理程序不知道你的看法是什麼。在您的視圖中設置一個標籤(在進行任何更新之前),然後在處理程序上打印視圖的標籤。 –