Duilib – 在主界面xml描述文件中使用ChildLayout或者Include嵌入子界面xml描述文件
1 为什么需要使用子界面xml描述文件
在软件界面设计较为简单时,Duilib编写界面描述文件时我们通常会在一个xml界面描述文件中就完成所有控件的描述,但是如果一个软件设置的非常复杂,我们如果还在一个xml文件中组织所有的控件,有很多缺点,比如
- xml文件非常大;
- xml组织复杂,不利于后期软件维护以及界面修改;
举个栗子,比如在Duilib中使用Option控件+TabLayout布局,点击一个Option控件就切换对应的Tab页面,而每个Tab页面又非常复杂,比如以下的界面设计:
如果我们将每个Tab页面单独写成一个子xml文件,第一,主界面的xml文件不会很复杂;第二,每个Tab页可单独维护,便于修改。
所以使用嵌入xml的方式可以将主界面与子界面大量繁杂的xml代码进行分离,便于开发与后期维护。
2 Duilib中嵌入子xml文件的方式
在Duilib中我们有两种方法可以嵌入子xml,一种是使用ChildLayout布局,另一种则使用Include关键字。
假设我们上述程序的第一个Option按钮添加HLS直播源对应的Tab页面的子xml的文件名为AddHLSLiveSource.xml,
如果使用ChildLayout方式,则在TabLayout的对应处添加以下xml语句:
<ChildLayout xmlfile="AddHLSLiveSource.xml" />
如果使用Include方式,则在TabLayout的对应处添加以下xml语句:
<Include source="AddHLSLiveSource.xml" />
这两种方式,ChildLayout和Include的使用效果基本一致,但是相对ChildLayout,Include的优点是可以自动识别自定义控件,而ChildLayout不可以,所以推荐使用Include。
下面提出主界面xml文件与子界面xml文件:
主界面xml文件
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<Window size="920,580" roundcorner="0,0" sizebox="6,6,6,6" caption="0,0,0,90" mininfo="920,580" showshadow="true" shadowsize="5" shadowposition="1,1" shadowcolor="#333333" >
<Font id="0" name="微软雅黑" size="12" bold="false" italic="false" remark="菜单的文字格式"/>
<Font id="1" name="微软雅黑" size="15" bold="false" italic="false" remark="Tab Option的文字格式"/>
<VerticalLayout bkcolor="0xFF2D2F30" >
<!-- 标题栏 -->
<HorizontalLayout height="32" bkcolor="0xFF2D2F30" >
<Text font="0" text="Pancake Recoder" textcolor="0xFF959595" padding="10,5,0,0"/>
<Control />
<HorizontalLayout width="70">
<Button name="MainWindow_Min_Btn" width="22" height="22" padding="0,5,0,0" normalimage="file='最小化-normal.png'" hotimage="file='最小化-hover.png'" tooltip="最小化" />
<Button name="MainWindow_Max_Btn" width="22" height="22" padding="0,5,0,0" normalimage="file='最大化-normal.png'" hotimage="file='最大化-hover.png'" tooltip="最大化" />
<Button name="MainWindow_Restore_Btn" visible="false" width="22" height="22" padding="0,5,0,0" normalimage="file='恢复按钮-normal.png'" hotimage="file='恢复按钮-hover.png'" tooltip="恢复" />
<Button name="MainWindow_Close_Btn" width="22" height="22" padding="0,5,0,0" normalimage="file='关闭按钮-normal.png'" hotimage="file='关闭按钮-hover.png'" tooltip="关闭程序" />
</HorizontalLayout>
</HorizontalLayout>
<!-- 业务区 -->
<HorizontalLayout >
<VerticalLayout width="150" >
<Option name="Option01" font="1" bindtablayoutname="MainWindow_TabLayout_Switch" bindtabindex="0" float="false" text="添加HLS直播源" width="150" height="60" textcolor="#FFFFFFFF" disabledtextcolor="#FFFFFFFF" align="center" selectedtextcolor="#FF8173FC" group="switch" selected="true" />
<Option name="Option02" font="1" bindtablayoutname="MainWindow_TabLayout_Switch" bindtabindex="1" float="false" text="新建录播任务" width="150" height="60" textcolor="#FFFFFFFF" disabledtextcolor="#FFFFFFFF" align="center" selectedtextcolor="#FF8173FC" group="switch" />
<Option name="Option03" font="1" bindtablayoutname="MainWindow_TabLayout_Switch" bindtabindex="2" float="false" text="正在录播" width="150" height="60" textcolor="#FFFFFFFF" disabledtextcolor="#FFFFFFFF" align="center" selectedtextcolor="#FF8173FC" group="switch" />
<Option name="Option04" font="1" bindtablayoutname="MainWindow_TabLayout_Switch" bindtabindex="3" float="false" text="已完成" width="150" height="60" textcolor="#FFFFFFFF" disabledtextcolor="#FFFFFFFF" align="center" selectedtextcolor="#FF8173FC" group="switch" />
</VerticalLayout>
<VerticalLayout>
<TabLayout name="MainWindow_TabLayout_Switch" >
<Include source="AddHLSLiveSource.xml" />
<HorizontalLayout>
<Label text="This is tab02." />
</HorizontalLayout>
<HorizontalLayout>
<Label text="This is tab03." />
</HorizontalLayout>
<HorizontalLayout>
<Label text="This is tab04." />
</HorizontalLayout>
</TabLayout>
</VerticalLayout>
</HorizontalLayout>
<!-- 状态栏 -->
<HorizontalLayout height="32" bkcolor="0xFF2D2F30">
</HorizontalLayout>
</VerticalLayout>
</Window>
子界面xml文件:AddHLSLiveSource.xml
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<Window>
<HorizontalLayout>
<Control width="15" bkcolor="#FFFF0000"/>
<VerticalLayout>
<Control height="20" bkcolor="#FFFF0000" />
<Label font="1" text="创建HLS直播源" textcolor="#FFFFFFFF"/>
<Control />
</VerticalLayout>
</HorizontalLayout>
</Window>
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:Duilib – 在主界面xml描述文件中使用ChildLayout或者Include嵌入子界面xml描述文件
原文链接:https://www.stubbornhuang.com/2385/
发布于:2022年10月12日 16:50:20
修改于:2023年06月21日 17:58:30
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
52