为什么setTitle之后的getHeight等于null? 如何获得实际高度值?
public class ActivityScreen extends MainScreen {
/**
* Creates new instance Activity screen
*/
public ActivityScreen() {
super();
TitleFieldManager titleField = new TitleFieldManager(Display.getWidth());
super.setTitle(titleField);
if (titleField.getHeight() == 0) {
// Why titleField.getHeight() == 0 ?
}
}
}
答案 0 :(得分:4)
因为您在屏幕的构造函数中调用titleField.getHeight()
。此时UI框架尚未通过屏幕的布局/测量过程。例如,如果在执行了至少一个屏幕的titleField.getHeight()
调用后,您将调用相同的paint(Graphics graphics)
,您将能够获得非零值。在绘制屏幕内容之前,所有布局/测量都会保证通过。
检查Manager.sublayout(int width, int height) API。 MainScreen
也是Manager
。因此,在构建屏幕之后的某个时刻,但在绘制之前,UI框架会调用其sublayout(int width, int height)
,其中所有布局/测量都会发生(所有子字段都会得到它们的大小)。
答案 1 :(得分:0)
我不是100%肯定这一点,但我认为元素的高度是在包含它的经理被计算出来的时候计算出来的。
尝试按下包含该标题的屏幕,然后调用titleField.getHeight()