儿童垂直布局的宽度

时间:2016-01-05 13:12:53

标签: vaadin vaadin7

我有一个HorizontalLayout(让我们称之为)。在这个内部,我有两个VerticalLayout s(左边' s称他们)。

只包含一些文字,包含很多元素。

的宽度为100%,因此需要完整的浏览器宽度:

parent.setWidth("100%");

应该占用所需的空间,正确应该占用所有其他空间。

我该怎么办?我尝试了herethere所描述的所有变体而没有成功。我试着:

  • left.setWidthUndefined();
  • right.setWidth("100%");
  • left.setWidth("150px");
  • left.setWidth("30%");以及right.setWidth("70%");

没有任何影响。

更新了源代码:

HorizontalLayout parent = new HorizontalLayout();
parent.setCaption("Parent");

VerticalLayout left = new VerticalLayout();
left.setCaption("Left");

VerticalLayout right = new VerticalLayout();
right.setCaption("Right");

parent.addComponent(left);
parent.addComponent(right);
parent.setWidth("100%");
right.setWidth("100%");
parent.setExpandRatio(right, 1.0f);

setCompositionRoot(parent);

2 个答案:

答案 0 :(得分:0)

Here is the documentation空间"发行" HorizontalLayout组件。

解决问题的关键是告诉HorizontalLayout组件如何通过layout.setExpandRatio(leftComponent, 1.0f);方法扩展它的孩子。

答案 1 :(得分:0)

我刚做了一个快速测试,以下似乎有效:

...
left.setSizeUndefined();
parent.setWidth("100%");
parent.setExpandRatio(right, 1);
...

screenshot

这是测试应用程序的完整代码(没有导入):

@Theme("reindeer")
public class ForumUI extends UI {

    @WebServlet(value = "/*", asyncSupported = true)
    @VaadinServletConfiguration(productionMode = false, ui = ForumUI.class)
    public static class Servlet extends VaadinServlet {
    }

    public static class SomeComponent extends CustomComponent {
        public SomeComponent() {
            HorizontalLayout parent = new HorizontalLayout();
            parent.setCaption("Parent");
            parent.addStyleName("v-ddwrapper-over");

            VerticalLayout left = new VerticalLayout();
            left.setCaption("Left");
            left.addStyleName("v-ddwrapper-over");

            VerticalLayout right = new VerticalLayout();
            right.setCaption("Right");
            right.addStyleName("v-ddwrapper-over");

            parent.addComponent(left);
            parent.addComponent(right);

            left.setSizeUndefined();
            parent.setWidth("100%");
            parent.setExpandRatio(right, 1);

            setCompositionRoot(parent);
        }
    }

    @Override
    protected void init(VaadinRequest request) {
        setContent(new SomeComponent());
    }

}