我在CatchtheCows使用了ImageMap小部件。这个小部件(扩展了imageView)假定图像和地图资源将存储在res /文件夹中,从而将它们设置在布局xml上。
我想使用自己的资源存储在SD卡中。所以我创建了一个接收映射文件路径和映像文件路径的构造函数。
问题来了,因为这个小部件需要预先计算imageView的宽度和高度,以便相应地缩放位图。但是以编程方式添加imageView似乎并没有触发onSizeChanged事件。
我该如何解决这个问题?
这就是我创建ImageMap的方式:
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 :(得分:0)
似乎你试图在实际渲染之前获得ImageView
的大小,这将返回零。视图大小仅在渲染后定义。
addOnGlobalLayoutListener可能会解决您的问题,因此您只能在渲染后获得大小 已经完成了