いくつかのリモート画像をロードするレイアウトのアプリがあります。リモート画像を読み込んでいるときは、強制高さ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()に問題があるようです。
皆さんありがとう