【问题标题】:Align checkbox to the right on Blackberry在黑莓上将复选框向右对齐
【发布时间】:2011-11-20 04:06:45
【问题描述】:

我需要将 CheckboxField 对齐到固定文本(在 Blackberry 上)的右侧,例如“管理连接”对话框。 代码是:

final HorizontalFieldManager hfm = new HorizontalFieldManager(USE_ALL_WIDTH);
hfm.add(new LabelField("Test me please", LabelField.ELLIPSIS | FIELD_LEFT | FIELD_VCENTER | USE_ALL_WIDTH));
cbx = new CheckboxField(null, false, FIELD_RIGHT | CheckboxField.NO_USE_ALL_WIDTH);
hfm.add(cbx);

我尝试了“USE_ALL_WIDTH”、“NO_USE_ALL_WIDTH”和类似标志的各种组合,但我仍然无法得到我想要的:文本一直到左边,复选框一直到右边。 如果 label 设置为 USE_ALL_WIDTH,则复选框消失,如果未设置,则复选框显示在文本附近(而不是 hfm 的右侧)。

【问题讨论】:

    标签: blackberry checkbox horizontalfieldmanager


    【解决方案1】:

    使用此样式位将复选框右对齐。

    private static final long checkBoxStyle = 134217728;
    
    add(new CheckboxField("test " , false, checkBoxStyle | USE_ALL_WIDTH));
    

    【讨论】:

    • 顺便说一下,那个值只是0x8000000(即设置最左边的位)
    • 这只是 CheckboxField.NO_USE_ALL_WIDTH 值,可从 BlackBerry API 7.0.0 获得 - 它不适用于早期设备。
    【解决方案2】:

    使用以下代码,这将解决您的问题。

    HorizontalFieldManager hfm = new HorizontalFieldManager(Field.USE_ALL_HEIGHT);
    LabelField lblShow = new LabelField("Test me please ", Field.FIELD_LEFT);
    CheckboxField cbShow = new CheckboxField("", false, CheckboxField.FIELD_RIGHT );
    VerticalFieldManager vfmLeft = new VerticalFieldManager();
    VerticalFieldManager vfmRight = new VerticalFieldManager(Field.USE_ALL_WIDTH); 
    vfmLeft.add(lblShow);
    vfmRight.add(cbShow);       
    hfm.add(vfmLeft);
    hfm.add(vfmRight);
    add(hfm);
    

    【讨论】:

    • 找到了更好的解决方案:在位图上画出整个复选框,然后将位图一分为二,在画布上左右翻转部分渲染。
    • vfmLeft 在这里是多余的。您可以直接将标签添加到水平字段管理器,即hfm.add(lblShow)
    猜你喜欢
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    • 2011-05-10
    • 2012-02-28
    • 2017-04-12
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多