2013-02-07 4 views
1

ImageMap 위젯을 CatchtheCows에서 사용하고 있습니다. 이 위젯 (imageView를 확장 한)은 이미지 및지도 리소스가 res/folder에 저장되고 레이아웃 xml에이를 설정한다고 가정합니다.프로그래밍 방식으로 생성 된 ImageView의 너비와 높이 얻기

sdcard에 저장된 자체 리소스를 사용하고 싶습니다. 그래서지도 파일 경로와 이미지 파일 경로를받는 생성자를 만들었습니다.

이 위젯은 미리 계산할 imageView의 너비와 높이가 필요하기 때문에 문제가 발생합니다. 그러나 imageView를 프로그래밍 방식으로 추가하면 onSizeChanged 이벤트가 발생하지 않는 것 같습니다.

이 문제를 해결하려면 어떻게해야합니까?

내가 내 이미지 맵 만드는 방법은 다음과 같습니다

mImageMap = new ImageMap(getApplicationContext(),"maps.xml", "/sdcard/media/myimage.jpg"); 
setContentView(mImageMap, new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT)); 

을하고이 상기 생성자 :

public ImageMap(Context context, String mapFile, String imageFile) { 
     super(context); 
     Bitmap b = BitmapFactory.decodeFile(imageFile); 
     this.setImageBitmap(b); 

     init();  
     loadMapFromSDCard("maps.xml"); 
    } 

답변

0

실제로 전에 당신이 ImageView의 크기를 얻어내는 것이 보인다 렌더링 된, 0을 반환합니다. 보기 크기는 렌더링 된 후에 만 ​​정의됩니다.

addOnGlobalLayoutListener이 문제를 해결할 수 있습니다, 그래서 당신은 단지 한 후 크기가 렌더링 얻을 XML 정의의 경우

+0

그래서 완료되면 이미지 뷰는 실제로 생성자를 호출하기 전에 렌더링됩니까? –

관련 문제