Проблемы с аннулированием представления

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

Спасибо всем


person NullPointerException    schedule 20.09.2012    source источник
comment
Как насчет установки imageBitmap после того, как вы установите высоту представления?   -  person PH7    schedule 20.09.2012
comment
PH7, который не имеет смысла и не работает   -  person NullPointerException    schedule 20.09.2012
comment
Я считаю, что ваш обработчик не знает, что вы думаете. Установите тег для вашего представления (до того, как вы сделаете какие-либо обновления), а затем напечатайте тег представления в обработчике.   -  person Tiago Almeida    schedule 20.09.2012
comment
это известно, потому что, если я заблокирую экран и разблокирую экран, изображение появится с правильной высотой (365).   -  person NullPointerException    schedule 20.09.2012


Ответы (1)


Решено

Я должен восстанавливать представление каждый раз, когда загружаю элемент изображения:

вид = новый FocusableImageView (активность);

person NullPointerException    schedule 20.09.2012