User interface 在HorizontalFieldManager中对齐字段

User interface 在HorizontalFieldManager中对齐字段,user-interface,blackberry,User Interface,Blackberry,我创建了一个自定义的HorizontalFieldManager,可以使用setPositionChild()和layoutChild()定位字段。如果我向它添加LabelField,它就可以正常工作。问题是当我将标签添加到VerticalFieldManager并将该VFM添加到自定义HFM时。问题是它没有采用VFM的首选高度。知道为什么吗 setPositionChild( getField(0), 0, 0); layoutChild(

我创建了一个自定义的
HorizontalFieldManager
,可以使用
setPositionChild()
layoutChild()
定位字段。如果我向它添加
LabelField
,它就可以正常工作。问题是当我将标签添加到
VerticalFieldManager
并将该VFM添加到自定义HFM时。问题是它没有采用VFM的首选高度。知道为什么吗

 setPositionChild(
      getField(0), 
      0, 
      0);
 layoutChild(
      getField(0), 
      getField(0).getPreferredWidth(), 
      getField(0).getPreferredHeight()); //.....
      setExtent(width, height);
这对你有帮助

 Manager customManager = new Manager(0)
 {
 protected void sublayout(int width, int height) {
     setPositionChild(
         getField(0), 
         0, 
         0);
     layoutChild(
         getField(0), 
         getField(0).getPreferredWidth(), 
         getField(0).getPreferredHeight());

     setPositionChild(
         getField(1), 
         Graphics.getScreenWidth()/2 - getField(1).getPreferredWidth()/2, 
         0);
     layoutChild(
         getField(1), 
         getField(1).getPreferredWidth(), 
         getField(1).getPreferredHeight());    

     setPositionChild(
         getField(2), 
         Graphics.getScreenWidth() - getField(2).getPreferredWidth(), 
         0);
     layoutChild(
         getField(2), 
         getField(2).getPreferredWidth(), 
         getField(2).getPreferredHeight());    

     setExtent(width, height);
 }      
});
添加(新LabelField(“Hello对齐”)

如果要添加多个字段,请为所有字段提供布局

若只使用一个字段,那个么就不需要给出布局,让它添加到manager中