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