获取以编程方式创建的ImageView的宽度和高度

时间:2013-02-07 16:05:44

标签: android imageview

我在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");
    }

1 个答案:

答案 0 :(得分:0)

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

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