1

我有一个嵌套在 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 就不再在行内垂直居中。关于如何做到这一点的任何建议?

谢谢!

4

2 回答 2

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);
          }
      };

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

于 2011-09-03T20:23:13.430 回答
0

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

于 2011-05-25T17:35:40.437 回答