在Android中加载Activity后执行代码

时间:2011-07-15 21:58:38

标签: java android layout oncreate

我正在尝试在活动加载后,我的应用程序格式化屏幕中的一些图像。问题是在onCreate()onResume()方法内,ImageView方法的宽度和高度= 0。调整视图大小后如何运行一些代码? 我测试onPostResume()但它不起作用=(

1 个答案:

答案 0 :(得分:3)

Android中的视图没有像Blackberry或iPhone那样的固定大小/位置;相反,它们是动态布局的。布局发生的时间晚于onCreate/onResume,理论上可以多次发生。每个视图都有方法onMeasureonLayout,这些方法对此负责。只有在onLayout方法返回后,您才能告诉视图的大小和位置。在此之前,视图的大小为0,位置为0(正如您所注意到的)。

因此尝试在onCreate/onResume中获取ImageView的大小毫无意义,因为此时尚未调用onLayout

相反,像这样覆盖onLayout并在那里做你的事情:

public class MyImageView extends ImageView {
    @Override
    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
        super.onLayout(changed, left, top, right, bottom);
        // at this point size and position are known
        int h = getHeight();
        int w = getWidth();
        doSomethingCool(h,w);
    }
}