我在dojo 1.4应用程序中有以下嵌套布局:
BorderContainer 1
- >堆叠容器1
- > - > BorderContainer 2
- > - > BorderContainer 3
StackContainer的大小宽度和高度均为100%。 当我使用maximize / restore调整浏览器窗口大小时,StackContainer会正确调整其父级BorderContainer的中心区域。
我遇到的问题是StackContainer子节点(BorderContainer 2和3)没有调整大小到StackContainer的contentBox。
是否有一些特殊的东西要强制调整StackContainer子项的大小? 我试过调用StackContainer1.resize(),但这没什么区别。
提前致谢。
其他信息:
感谢回复者。包含StackContainer的小部件层次实际上是一个自定义小部件,因此StackContainer实际上不是直接在BorderContainer中,而是将其高度和宽度显式设置为100%。这有效,StackContainer在浏览器最大化时正确调整大小。 stackcontainer的直接子节点是BorderContainers,当调整StackContainer的大小时,这些BorderContainers不会调整大小。确切的标记是:
<div dojoType="dijit.layout.StackContainer" style="height:100%;width:100%;">
<div dojoType="dijit.layout.BorderContainer" gutters="false" style="height:100%;width:100%;padding:0;" id="bcWrongSize">
</div>
</div>
BorderContainer'bcWrongSize'没有使用父StackContainer调整大小。 BorderContainer上指定的内联高度和宽度由StackContainer替换为显式像素尺寸。但是,在浏览器调整大小时,StackContainer会正确调整其父窗口小部件的大小,但BorderContainer上的显式高度和宽度不正确。 最初,调用StackContainer上的布局方法,并调整BorderContainer(作为可见子)的大小。但是,它传递给BorderContainer的_contentBox维度是StackContainer在调整大小之前的维度。由dojo.marginBox计算的宽度和高度不正确(offsetWidth和offsetHeight是浏览器最大化之前的维度)。 也许这个问题是因为StackContainer是自定义小部件的subContainerWidget,所以大小和宽度和高度都是100%?
答案 0 :(得分:3)
我们在一个项目上遇到了类似的问题。以下是适用于我们的代码段。注意stackContainer的区域使用(它在bordercontainer中)和内边框容器上缺少高度/宽度。
<div dojotype="dijit.layout.StackContainer" jsid="buttonStack" region="bottom" style="height: 180px">
<div jsid="selectionButtons" dojotype="dijit.layout.BorderContainer" gutters="false">
<div dojotype="dijit.layout.ContentPane" region="bottom">
<button id="btnClearSelection" dojotype="dijit.form.Button"
label="Clear Selection" disabled> </button>
<button id="btnClearAll" dojotype="dijit.form.Button"
label="Clear All" disabled> </button>
</div>
</div>
<div>