2011-07-15 22 views
-2

活动加载后,我在屏幕上尝试我的应用程序格式。问题出现在onCreate()onResume()方法里面我的ImageView的宽和高= 0。如何在视图重新调整后运行一些代码? 我测试onPostResume()但它不工作=(Android中在Android中的活动加载后执行代码

+2

我觉得你的问题是在第15行,你应该添加一个';'。或者,减少口舌:你可能想要发布不起作用的代码(只是一个最小的例子,它显示什么不起作用),然后告诉我们你想要什么,你得到什么等等等等。 – Nanne

+0

不要以为我需要解释代码,fill_parent高度和宽度的imageview有高度= 0和宽度= 0,而活动加载时,我想执行代码时,该项目采取真正的大小.. – ChyBy

+1

我想这么多,这就是为什么我添加了评论。如果你首先同意的话,我猜你会发布代码,对吧?对。对你来说可能很清楚,但我对发生的事情没有快速的了解,所以不能(也不会)帮助。想一想:有什么看法?它是否设置?它是如何设置的?尺寸应该是多少?我们可以在你要求的时候确定尺寸吗?图像是否设置在代码中?什么时候? – Nanne

回答

3

意见没有固定的大小/位置像在黑莓或iPhone;相反,它们是动态奠定了布局发生明显较onCreate/onResume,理论上可以发生很多。每个视图都有方法onMeasureonLayout这是负责的方法,只有在onLayout方法返回后,你可以告诉视图的大小和位置,在此之前视图的大小为0,位置为0(正如你已经注意到的那样)

因此,试图获取ImageView的大小onCreate/onResume是没有意义的,因为onLayout尚未在该p处被调用oint。

相反,覆盖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); 
    } 
} 
+0

感谢您的回答=) – ChyBy

相关问题