我有一个应用程序,其布局可以加载一些远程图像。加载远程图像时,将显示一个强制高度为 100 的时钟(我从 imageview 覆盖了 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() 似乎有问题。
谢谢大家