问题描述
|
我有一个嵌套在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将不再在行内垂直居中。有什么建议吗?
谢谢!
解决方法
上面的答案有效,只是确保您为上述内容输入了两个语句,如以下示例所示。
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,26); //height of the bitmap);
}
};
这将是相同的答复..谢谢你们..的讨论。它帮助了我。
,尝试将setExtent(width,40)
更改为setExtent(this.getWidth(),40)
。如果getWidth()试图占用所有可用宽度(这是您的setExtent()调用所做的事情),这可能无法工作,并且由于文本将以左对齐的方式绘制,因此您的字段看起来像是\并非居中,但实际上,它只是占据了桌子的整个单元格。或者,如果这不起作用,您可能可以做setExtent(Math.min(width,40);