注意:布局模板是SOUI 2.8.0.4 新增长的功能。以前版本不支持。web
SOUI的listview等一系统控件支持经过模板来建立列表项,这里要说的模板不是指listview中的使用的列表项模板。ide
对于比较大的项目,在页面布局中可能会出现重复的布局结构,只是部分属性不同。对于彻底相同的布局,soui一直支持使用include属性来重复引用布局XML脚本。可是对于属性可能发生变化但总体布局一致的状况,在实现布局模板支持以前,除了在布局脚本中重复XML没有更好的办法。布局
有了布局模板,这样重复的布局就能够更好的解决了。ui
咱们先看一下demo中提供的例子。spa
首先是增长了一个values\template.xml文件,固然在uidef.xml里也加上:code
<!--定义全局template对象--> <template src="values:template"/>
再打开template.xml:xml
<?xml version="1.0" encoding="utf-8"?> <template> <g.block> <window name="{{name}}" layout="hbox" gravity="center"> <window size="-1,-1" layout="hbox"> <text text="name:" colorText="{{color}}" /> <link.web text="{{text}}" href="{{text}}"/> </window> <img skin="skin_avatar"/> </window> </g.block> </template>
在demo中咱们经过template.xml的template元素定义了一个模板:g.block ,这里用"g."开头,表明这是一个全局的模板。有全局模板就会有局部模板,局部模板和全局模板定义相似,只是它定义在布局文件的SOUI节点下,和root节点平级便可,也可参考局部style,局部skin的设置。一个局部的模板只能在当前宿主窗口中有效。另外这里的名字能够随便写,不必定要以“g.”开头。对象
观察上面的模板,咱们发现有3个字符串是“{{xxx}}”形式,这是布局的变量,将会在使用布局的时候被传递的实际参数替换。blog
再看一下在布局XML里如何引用这个模板:utf-8
<t:g.block size="-1,-1"> <data name="tpl_soime" color="#ff0000" text="soime.cn!"/> </t:g.block> <t:g.block size="-2,-1"> <data name="tpl_soui" color="#0000ff" text="ui520.cn"/> </t:g.block>
注意,SOUI使用“t:”这个名字空间来标识后面是一个模板调用。
模板调用后面的布局参数会覆盖模板的第一个子节点的布局参数。注意,一个模板应该只有一个布局根节点,多个布局根节点会被自动忽略。
在调用模板的XML节点必须有一个data子节点来存储参数值,这些参数会自动替换模板中对应的变量。
这就是整个模板使用过程。若是不使用模板,达到一样的效果,模板中的XML要重复写2次,使用模板后,xml结构会更简洁。
下面咱们看看demo中的效果:
模板的使用方法完成。
启程软件 2019-03-14