2013-02-07 97 views
1

我在CatchtheCows上使用ImageMap小部件。這個小部件(它擴展了imageView)假定圖像和地圖資源將被存儲在res /文件夾中,並因此將它們設置在佈局xml上。以編程方式創建ImageView的寬度和高度

我想使用我自己的資源存儲在SD卡中。所以我創建了一個接收地圖文件路徑和圖像文件路徑的構造函數。

問題來了,因爲這個小部件需要預先計算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的大小之前,它實際上是呈現,這將返回零。視圖大小僅在渲染後定義。

addOnGlobalLayoutListener可能會解決你的問題,所以你只能得到後的大小呈現 完成

+0

所以在XML定義的情況下,不會將ImageView的實際得到調用構造函數之前渲染? –

相關問題