1

我在CatchtheCows使用 ImageMap 小部件。此小部件(扩展 imageView)假定图像和地图资源将存储在 res/ 文件夹中,因此将它们设置在布局 xml 中。

我想使用存储在 sdcard 中的自己的资源。所以我创建了一个构造函数,它同时接收地图文件路径和图像文件路径。

问题来了,因为这个小部件需要预先计算 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");
    }
4

1 回答 1

0

似乎您正在尝试在ImageView实际渲染之前获取它的大小,这将返回零。视图大小仅在渲染后定义。

addOnGlobalLayoutListener可能会解决您的问题,因此您只能在渲染完成后获得大小

于 2013-02-07T16:35:55.510 回答