Dojo StackContainer子项不会在浏览器最大化/恢复时调整大小

时间:2010-05-25 11:51:18

标签: dojo resize stack border containers

我在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%?

1 个答案:

答案 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>