2011-03-20 119 views
1

setTitle等于null后为什么getHeight? 如何获得实际身高值?如何让黑莓屏幕上的标题屏幕高度?

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 ? 
      } 
    } 
} 

回答

4

因为你调用屏幕的构造titleField.getHeight()。此时,UI框架尚未通过屏幕的布局/测量过程。例如,如果至少在一个屏幕的paint(Graphics graphics)调用已执行后调用相同的titleField.getHeight(),则可以获得非零值。所有布局/测量都可以在屏幕内容被绘制之前保证通过。

检查Manager.sublayout(int width, int height) APIMainScreen也是Manager。因此,在屏幕构建完成后的某一时刻,但在绘制屏幕之前,UI框架会调用其所有布局/测量发生的地方(所有子域都获取其大小)。

0

我不是100%确定这一点,但我认为元素的高度是在包含它的管理器布置时计算出来的。

尝试推动包含屏幕标题,然后调用titleField.getHeight()