0

我正在尝试返回 ImageView 的宽度和高度,但一直返回 0。我在 OnCreate() 中调用 ImageView.getWidth() 和 ImageView.getHeight(),我相信 ImageView 没有足够的时间来初始化,因此我得到的错误是:

java.lang.IllegalArgumentException:宽度和高度必须 > 0

我的问题是:哪里是检索 ImageView 的宽度和高度的好地方,所以我知道它有足够的时间来正确初始化?

注意:我尝试过 onWindowFocusChanged() 但遇到了同样的问题。

干杯!

4

1 回答 1

3

引自“Hello Android(第三版)”第 81 页:

新 Android 开发人员常犯的一个错误是在其构造函数中使用视图的宽度和高度。当调用视图的构造函数时,Android 还不知道视图的大小,因此将大小设置为零。实际尺寸是在布局阶段计算的,这发生在构建之后但在绘制任何东西之前。您可以使用 onSizeChanged( ) 方法在值已知时收到通知,或者您可以稍后使用 getWidth( ) 和 getHeight( ) 方法,例如在 onDraw( ) 方法中。

于 2013-07-05T00:14:55.763 回答