在实际的项目中我们的窗口常常不是一成不变的,往往需要子窗口来自适应父窗口或者父窗口自适应子窗口。子窗口适应父窗口在原来的SOUI2里已经有很好的支持,在后续改进中SOUI也加强了父窗口自适应子窗口的支持。所以在SOUI3里父窗口适应子窗口是很容易的。现在来看一个使用实例。
<SOUI name="mainWindow" title="@string/title" bigIcon="ICON_LOGO:32" smallIcon="ICON_LOGO:16" margin="5,5,5,5" resizable="1" wndType="appMain"
appWnd="1"
translucent="1"
>
<root skin="_skin.sys.wnd.bkgnd" cache="1" width="388" height="-1" >
<caption pos="0,0,-0,30" show="1" font="adding:0">
<icon pos="10,8" src="ICON_LOGO:16"/>
<text pos="29,9">@string/title</text>
<imgbtn name="btn_close" skin="_skin.sys.btn.close" pos="-45,0" tip="close" animate="1"/>
<imgbtn name="btn_min" skin="_skin.sys.btn.minimize" pos="-83,0" animate="1" />
</caption>
<window pos="5,[2" size="-2,-1" layout="vbox">
<window size="-2,122" layout="vbox">窗口上半部分
<text name="btn_show" cursor="hand" colorText="#0000cc" size="-1,-1" msgTransparent="false" layout_gravity="center">显示/隐藏</text>
</window>
<window name="wnd_hide" size="-2,122" show="false" display="false" layout="hbox">©2021 SOUI3</window>
</window>
</root>
</SOUI>
这里只重点分析和主窗口自适应子控件的相关,首先我们在root节点,指定了宽度为388为确定宽,而高度则是指定为-1它的含义即为自动适应子窗口的高度(特别注意:要使用自适应一定要让子控件的高度或宽度是可计算的,防止相互依赖)。而子控件wnd_hide 一定要注意,它使用了一个display属性说明控件隐藏状态下是不占位的这里一定要注意,否则即使你隐藏它也会占用位置。这样我们简单处理wnd_hide控件的显示隐藏就可以动态改变窗口的高度。实际使用效果如下:
![](https://img-blog.csdnimg.cn/20210204205613490.gif)