2013-02-07 70 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的实际得到调用构造函数之前渲染? –

相关问题