2012-09-20 4 views
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()에 문제가있는 것으로 보입니다.

감사

저는 이미지 요소마다로드 뷰 reinstanciate 해결해야 모든

+0

보기의 높이를 설정 한 후 imageBitmap을 설정하는 방법은 어떻습니까? – PH7

+0

감각이없고 작동하지 않는 PH7 – NullPointerException

+0

귀하의 처리자가 귀하의 견해를 알지 못한다고 저는 믿습니다. 업데이트를 수행하기 전에 태그를보기로 설정 한 다음 핸들러에보기의 태그를 인쇄하십시오. –

답변