水平对齐tableLayout容器中心

时间:2018-03-07 05:47:30

标签: codenameone

我在一个容器中有一个tableLayout(2列),宽度为30和50,即80%。但是我很难将tableContainer保持在水平中心位置。如果我使用bgColor,tableContainer似乎占用了所有的screenWidth。

public MyBooking(Resources res) {
    super(new BorderLayout());
    Container mainContainer = new Container(new BoxLayout(BoxLayout.Y_AXIS));
    add(BorderLayout.CENTER, mainContainer);

    TableLayout tl = new TableLayout(5, 2);
    Container tableContainer = new Container(tl);

    tableContainer.add(tl.createConstraint().widthPercentage(30), dateLabel).add(tl.createConstraint().widthPercentage(50), dateData)
                                .add(tl.createConstraint().widthPercentage(30), timeLabel).add(tl.createConstraint().widthPercentage(50), timeData)
                                .add(tl.createConstraint().widthPercentage(30), stationLabel).add(tl.createConstraint().widthPercentage(50), stationData)
                                .add(tl.createConstraint().widthPercentage(30), advisorLabel).add(tl.createConstraint().widthPercentage(50), advisorData)
                                .add(tl.createConstraint().widthPercentage(30), problemsLabel).add(tl.createConstraint().widthPercentage(50), problemContainer)
                                .add(tl.createConstraint().widthPercentage(30), remarksLabel).add(tl.createConstraint().widthPercentage(50), remarksData);

    mainContainer.add(FlowLayout.encloseCenter(tableContainer));
    revalidate();
}

enter image description here

使用bgcolor:

tableContainer.getAllStyles().setBgColor(0xff0000);
tableContainer.getAllStyles().setBgTransparency(255);

enter image description here

使用“mainContainer.add(FlowLayout.encloseCenter(tableContainer))”对布局没有影响。那是为什么?

1 个答案:

答案 0 :(得分:0)

这就是为什么我们不建议将这种流布局技巧用于除了非常简单的确定性组件之外的任何其他方法。

当你只给出影响首选宽度的80%时,布局并不需要关心。由于涉及的组件非常大并且具有未确定的大小FlowLayout尝试重排并且严重失败(它基​​本上试图"打破一条线")。由于它转到新行,第一行(您的表所在的位置)占用整个"行"。