如何知道活动何时布局?

AmI*_*ord 1 layout android android-mapview

我有一个mapview,我想把一些标记放在上面.当我开始活动时,我将从web服务中检索这些,因此我需要知道当前视口的最小和最大lat/lng对.我在打电话

mMapView.getWidth()
mMapView.getHeight()
Run Code Online (Sandbox Code Playgroud)

但是在活动开始时他们都返回0.我尝试将它放在onAttachedToWindow,onResume,onPostCreate,onPostResume,onStart等等,但无济于事.我怎么知道活动已完成所有视图的布局并准备好给我正确的高度和宽度测量值?

big*_*nes 6

这篇帖子我发现谷歌搜索:

假设您的视图可见,其大小已在活动窗口获得焦点时指定.也就是说,当使用hasFocus = true调用activity.onWindowFocusChanged时.

顺序大致是:

view.onFinishInflate

view.onMeasure

view.onSizeChanged(width,height,0,0)

view.onLayout

activity.onWindowFocusChanged(真)

我试过,它有效.

编辑

我发现使用a可能更好ViewTreeObserver,看到这个答案.