2015-01-13 78 views
0

我有一个填充25px的VerticalPanel - 它有一个表格作为第一个组件,TabSheet作为第二个。展开内容填充DIV,同时“停留”在div内 - vaadin 7

如果我不指定膨胀率两个组件会自动获得50%的高度是这样的:

<div class="expand"> 
<div class="v-slot" style="height:50%"><table>.......</table></div> 
<div class="v-slot" style="height:50%"><tabSheet>.......</tabSheet></div> 
</div> 

,并VerticalLayout的充满并填充为“工作”。 - 超.. BUT

我想有表(第一组件)占用尽可能多的空间,因为它需要,然后第二个组件(TabSheet)应占用剩下的100%。但问题是,展开比对VerticalLayout的当我设置到1f setExpandRatio(tabs, 1f)为第二组件的HTML变成:在VerticalLayout的是不是“工作”了的

<div class="expand"> 
<div class="v-slot"><table>.......</table></div> 
<div class="v-slot" style="height:100%"><tabSheet>.......</tabSheet></div> 
</div> 

现在填充(25px的) - 的标签页在“底部”展开VerticalLayout。

我该如何达到理想的行为? - 听起来像是一个非常普遍的问题 - 第一个组件获得第一个优先级,第二个获得剩下的100%。

+1

是否填充自己的CSS,因为您应该使用'setSpacing(true)'和/或'setMargin(true)'将填充留给Vaadin。 – geert3

回答

1

不应该使用CSS填充VerticalLayout,打破Vaadin布局,如您所见。取而代之的是,你要么用说

layout.setSpacing(true); 

layout.setMargin(true); 

使间距或marging的布局如果要修改默认Vaadin间距或利润值,请VerticalLayout,其可能特殊的CSS。

比方说,你的布局有款式名称mymargins中,你可以控制它与下面的CSS边距大小:

.mymargins.v-margin-left {padding-left: 10px;} 
.mymargins.v-margin-right {padding-right: 20px;} 
.mymargins.v-margin-top {padding-top: 40px;} 
.mymargins.v-margin-bottom {padding-bottom: 80px;} 

它可以控制VerticalLayout的间距有以下种类的CSS:

.v-vertical > .v-spacing { 
    height: 30px; 
}