首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > BlackBerry >

黑莓学习札记之二-布局管理器Manager

2012-09-21 
黑莓学习笔记之二--布局管理器ManagerManager是Srceen排版的类,控制Srceen里Field的位置。相当于android中

黑莓学习笔记之二--布局管理器Manager
    Manager是Srceen排版的类,控制Srceen里Field的位置。相当于android中的垂直布局属性和水平布局属性。只是这里的布局是用一个类来控制的。
   
    Manager有四个子类:
    HorizontalFieldManager
    VerticalFieldManager
    FlowFieldManager
    DialogFieldManager

    1、HorizontalFieldManager以行为单位,每个Field占一行,相当一列多行,如果内容列数量超出Manage高度,设置了滚动条可滚动显示,否则裁剪。每行从屏幕的最左边开始,结束于最右边,所有水平样式用不到这里的UI控件里,可以应用垂直样式,例如:Field.FIELD_TOP.布局方向也可以通过设置样式来控制,比如设置:Field.RIGHT_TO_LEFT 或者 Field.LEFT_TO_RIGHT

    2、VerticalFieldManager以列为单位,每个Field占一列,相当一行多列。内容超宽,没设横向滚动条就被裁剪。每行从屏幕的最上端开始,结束于最下端,所以垂直样式在用不到这里边的UI控件里,可以应用水平样式。

  3、FlowFieldManager在一行中从左到右依次排列Field,如果超宽,自动转到下一行。

  4、DialogFieldManager专门为Dialog定制的,分上下两部分,上部分水平排列两个Field:bitmap和LabeField,代表Dialog的图标和标题;下部分是客户Field区域,按VerticalFieldManager管理。
  

 
  Manager的样式:

    1、滚动条

    VERTICAL_SCROLL:开启垂直滚动

    NO_VERTICAL_SCROLL:关闭垂直滚动

    HORIZONTAL_SCROLL:开启水平滚动

    NO_HORIZONTAL_SCROLL:关闭水平滚动

    VERTICAL_SCROLLBAR:开启显示垂直滚动条

    NO_VERTICAL_SCROLLBAR:不显示垂直滚动条

    HORIZONTAL_SCROLLBAR:开启水平滚动条

    NO_HORIZONTAL_SCROLLBAR:关闭水平滚动条

    2、Manager内Field对齐方式:

    FIELD_TOP:顶对齐

    FIELD_VCENTER:垂直中对齐

    FIELD_BOTTOM:底对齐

    FIELD_LEFT:左对齐

    FIELD_HCENTER:水平中对齐

    FIELD_RIGHT:右对齐

    Screen里的有一个主Manager,它可以嵌套许多个子Mnager,以此形成复杂排版。

    1、在添加子Manager时,要逆序添加Field,不然多数情况出错,这因为父Mnager根据子Manager尺寸来决定自己的尺寸,一旦定下就不会更改。如后添加Field到子Manager,超出父Manager的尺寸会出错,尤其父Manager是HorizontalFieldManager时。

    2、父Manager的Style可以“遗传”到子Manager去。即父Manager定义的Style同样对子Manager有效,但反过来却不行。

    3、要想Scroll滚动有效,Manager里包含的Field必须包括可获得焦点的Field,全是LabelField不起作用。

    先来看一个小例子:
    只显示两个按钮,一左一右,分别是 Clear 和 Submit
    代码如下:
   

public MyScreen() {super();HorizontalFieldManager _managerBottom = new HorizontalFieldManager();add(_managerBottom);ButtonField mClearButton = new ButtonField("Clear");ButtonField mSubmitButton = new ButtonField("Submit");_managerBottom.add(mClearButton);_managerBottom.add(mSubmitButton);}

   


    我们一般都会把这两个按钮居中,其实加一个样式就可以了,相当于android中的layout_gravity。
   
HorizontalFieldManager _managerBottom = new HorizontalFieldManager(Field.FIELD_HCENTER);




    下边这个例子就稍微复杂点,就是为了弄懂这个布局是怎么回事的。

   
package mypackage;import net.rim.device.api.ui.Manager;import net.rim.device.api.ui.component.ButtonField;import net.rim.device.api.ui.component.LabelField;import net.rim.device.api.ui.container.HorizontalFieldManager;import net.rim.device.api.ui.container.MainScreen;import net.rim.device.api.ui.container.VerticalFieldManager;/** * A class extending the MainScreen class, which provides default standard * behavior for BlackBerry GUI applications. */public final class MyScreen extends MainScreen {/** * Creates a new MyScreen object */public MyScreen() {super();Manager manS;manS = this.getMainManager();HorizontalFieldManager manV = new HorizontalFieldManager(Manager.FIELD_HCENTER | Manager.HORIZONTAL_SCROLL);VerticalFieldManager man1 = new VerticalFieldManager();VerticalFieldManager man2 = new VerticalFieldManager();HorizontalFieldManager man3 = new HorizontalFieldManager();VerticalFieldManager man4 = new VerticalFieldManager();HorizontalFieldManager man5 = new HorizontalFieldManager();int i;for (i = 1; i < 13; ++i) {man2.add(new ButtonField("No" + String.valueOf(i)));man3.add(new ButtonField("No" + String.valueOf(i)));man4.add(new LabelField("No" + String.valueOf(i)));man5.add(new ButtonField("No" + String.valueOf(i)));}man1.add(man3);man1.add(man4);man1.add(man5);manV.add(man1);manV.add(man2);manS.add(manV);}}







  

热点排行