为了账号安全,请及时绑定邮箱和手机立即绑定

使用 TableLayout 溢出布局

使用 TableLayout 溢出布局

HUH函数 2021-12-18 09:58:50
我需要在某种表格中连续显示三件事。第一列应该有一个固定的宽度,比如屏幕的 15%。第三个应该右对齐并采用其首选宽度。第二个应该占用所有剩余的空间(我需要添加一些间距,但这是另一回事)。这发生在start:    final Container list = new Container(BoxLayout.y());    list.setScrollableY(true);    final String[][] lines = {            {"19", "Some text", "123,00"},            {"20", "Some very very very very looong text", "1,00"},    };    for(final String[] line : lines) list.add(createContainer(line));    form.add(list);容器相当简单:private Container createContainer(String[] line) {    final TableLayout tableLayout = new TableLayout(1, 3);    tableLayout.setGrowHorizontally(true);    final Container result = new Container(tableLayout);    {        final Label l = new Label(line[0]);        l.getAllStyles().setFgColor(0x0000FF);        result.add(tableLayout.createConstraint().widthPercentage(15), l);    }    {        final Label l = new Label(emptyToSpace(line[1]));        l.getAllStyles().setFont(Font.createSystemFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_MEDIUM));        result.add(tableLayout.createConstraint().widthPercentage(-2), l);    }    {        final Label l = new Label(line[2]);        l.getAllStyles().setFont(Font.createSystemFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_LARGE));        l.getAllStyles().setFgColor(0x00FF00);        result.add(tableLayout.createConstraint().widthPercentage(-1).horizontalAlign(Component.RIGHT), l);    }    return result;}根据 javadoc,-1表示首选大小并-2表示“剩余空间”。它有点工作,但似乎有一个错误的估计。无论我选择什么设备,问题都发生在模拟器中。我可能做错了,因为我是 codenameone 布局的新手。
查看完整描述

1 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

-2 标志主要针对最后一列进行了优化,因此这看起来像是一个错误,但可能很难解决。我认为没有必要在此处使用表格布局,因为您不使用可提供行之间对齐的表格。

一种更简单的方法是边框布局,例如:

Container c = BorderLayout.centerEastWest(new Label(emptyToSpace(line[1])), 
                   rightText, leftText);

如果您希望左列对齐,只需Component.setSameWidth()在整列上使用。


查看完整回答
反对 回复 2021-12-18
  • 1 回答
  • 0 关注
  • 188 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信