У меня есть приложение с макетом, который загружает некоторые удаленные изображения. Когда загружается удаленное изображение, отображаются часы с принудительной высотой 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().
Спасибо всем