BlackBerry垂直居中LabelField,具有自定义高度

时间:2011-05-25 16:42:55

标签: java blackberry labelfield

我有一个嵌套在TableLayoutManager行中的LabelField。我希望行是一个特定的高度(与位图背景相同的高度)。为了实现这一点,我更改了嵌套LabelField的layout()方法:

LabelField lblHours = new LabelField(hours,
            Color.BLACK, Manager.FIELD_VCENTER) {
        protected void layout(int width, int height) {
            super.layout(width, 40 //height of the bitmap);
            setExtent(width, 40 //height of the bitmap);
        }
    };

这成功增加了TableLayoutManager的行大小。但是,一旦我这样做,LabelField就不再在行内垂直居中。有关如何做到这一点的任何建议吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

上述答案可以确保您为上述内容添加两个语句..如下例所示。

LabelField importanceLabel = new LabelField("Importance: ",LabelField.FIELD_VCENTER | LabelField.FIELD_RIGHT) {
          public void paint(Graphics g) { 
              g.setColor(0x145085); 
              super.paint(g); 
          } 
          protected void layout(int width, int height) {
              super.layout(Math.min(width, this.getFont().getAdvance(this.getText())), 26); //height of the bitmap);
              setExtent(Math.min(width, this.getFont().getAdvance(this.getText())), 26); //height of the bitmap);
          }
      };

这将是相同的回答..谢谢你们......讨论。它帮助了我。

答案 1 :(得分:0)

尝试将setExtent(width, 40)更改为setExtent(this.getWidth(), 40)。如果getWidth()试图占用所有可用宽度(这是你的setExtent()调用正在进行的操作),这可能无法工作,并且因为文本将被左对齐绘制,所以看起来你的字段不是'以中心为中心,但实际上它只是占据了你桌子的整个单元格。或者,如果这不起作用,您可以执行setExtent(Math.min(width, this.getFont().getAdvance(this.getText())), 40);