XML
XML 是一种可扩展的标记语言,LCUI 之所以采用 XML 而不是 HTML,主要有以下理由:
- XML 比 HTML 更简单。
- LCUI 不是浏览器,不打算实现 HTML 中的所有标签的功能,因为这是既浪费时间又没有意义的事情。
- 使用 HTML 会让用户以开发网页的思维方式去编写 LCUI 应用,然后误以为
<div>、<img>、<table>、<video>、<audio>、<table>等标签在 LCUI 中会有效果。
在开始前,我们假定你已经熟悉 HTML 或 XML 这类标记语言的语法,本文将跳过基本语法和相关术语的介绍,直接讲解 LCUI 的 XML 文档写法和常用元素的用法,如需了解更多请查阅相关文档。
在前面的章节中我们已经了解到 LCUI 的 XML 文档内容格式和预定义元素的用法:
<?xml version="1.0" encoding="UTF-8" ?>
<lcui-app>
<resource type="text/css" src="main.css"/>
<ui>
<textview id="text" type="textview">
Hello, World!
</textview>
</ui>
</lcui-app>
第一行声明文档的类型,第二行的<lcui-app> 声明了它包裹的内容适用于 LCUI 应用,第三行的 <ui> 包裹了整个用户界面的结构及其所有组件的信息。
常用元 素
resource
声明资源信息,可用于加载资源文件。
| 属性 | 说明 |
|---|---|
| type | 资源类型,可选值有:
当值为 |
| src | 资源文件的来源路径 |
widget
声明组件,仅限在 <ui> 内使用。
| 属性 | 说明 |
|---|---|
| type | 组件的类型名称,需要是组件原型库中已注册的名称 |
| id | 唯一标识符 |
| class | 类名称 |
在 <ui> 中,如果元素的标签名不是预定义的,则会视为 <widget> 元素,因此,你可以使用组件类型名作为标签名,例如以下两行元素是等效的:
<widget type="textview" class="text">hello</widget>
<textview class="text">hello</textview>
API
LCUI 提供的 XML 文档相关的函数有两个:
LCUI_Widget LCUIBuilder_LoadString(const char *str, int size);
LCUI_Widget LCUIBuilder_LoadFile(const char *filepath);
从函数原型可以知道,这两个函数分别用于从字符串和文件中加载 XML 文档内容,它们的返回值都是一个根组件,这个根组件只是充当包含了所有组件的容器,真正有用的是它里面组件,因此我们需要使用 Widget_Unwrap() 函数展开该容器组件,将它里面的组件暴露到外 面。