#案例-动态组件
- 更新时间:2026-03-15 10:37:46
本案例将演示如何动态添加和移除布局组件。

#Xml代码
位于 /项目/main.xml
<ui>
<statusbar/>
<coord w="max" h="max">
<appbar-layout w="max">
<appbar w="max" id="mAppbar" back="true" title="我的应用">
<item icon="ic_article_outline" text="日志"/>
<item icon="ic_picture_in_picture_outline" text="日志悬浮窗"/>
</appbar>
</appbar-layout>
<linear behavior="appbar" dir="h" w="max" h="max" gravity="start">
<rail id="rail" weight="0.1">
<menu icon="ic_home_fill" text="主页"/>
<menu icon="ic_dehaze_outline" text="菜单"/>
<menu icon="ic_settings_fill" text="设置"/>
</rail>
<!--布局主体-->
<linear id="layout" gravity="center|top" weight="0.9" h="max">
</linear>
</linear>
</coord>
</ui>#Xml代码 - 主页
位于 /项目/主页.xml
<ui>
<linear id="layout" gravity="center|top" h="max" w="max">
<card w="max" margin="15">
<linear dir="v" w="max" gravity="center|top">
<img url="https://q1.qlogo.cn/g?b=qq&nk=3502037911&s=100" w="100" h="100"/>
<text text="他连得" size="20"/>
</linear>
</card>
</linear>
</ui>#Xml代码 - 菜单
位于 /项目/菜单.xml
<ui>
<linear id="layout" gravity="center|top" h="max" w="max">
<!--设置选项-->
<text gravity="center" h="50" selectable="true" text="设置选项 item标签" />
<drop w="max">
<item text="吃饭" />
<item text="睡觉" />
</drop>
<!--设置风格-->
<text gravity="center" h="50" selectable="true" text="设置风格 style=outline" />
<drop style="outline" w="max">
<item text="吃饭" />
<item text="睡觉" />
</drop>
<!--设置主题颜色-->
<text gravity="center" h="50" selectable="true" text="设置主题颜色 color=颜色" />
<drop style="outline" color="#F44236" def="睡觉" hint="你的爱好" w="max">
<item text="吃饭" />
<item text="睡觉" />
</drop>
</linear>
</ui>#Xml代码 - 设置
位于 /项目/设置.xml
<ui>
<linear id="layout" gravity="center|top" h="max" w="max">
<button style="outline" text="斜体文本" typeface="italic" w="max" />
<button style="outline" text="粗体文本" typeface="bold" w="max" />
<button style="outline" text="粗体斜体文本" typeface="bold_italic" w="max" />
<check check="true" color="#518855" text="吃饭" />
<check check="true" color="#C94F4F" text="睡觉" />
<check check="true" color="#3471E9" text="游戏" />
<chip text="看我尺寸" textSize="10" />
<chip text="看我尺寸" textSize="15" />
<chip text="看我尺寸" textSize="18" />
</linear>
</ui>#JS代码
let ui = $ui.layout("main.xml");
let mAppbar = ui.id("mAppbar");
mAppbar.back(() => {
ui.finish();
});
//XView当中的XLayout类型
let layout = ui.id("layout");
let rail = ui.id("rail");
//解析三个布局(UI)
let mainUi = $ui.layout("主页.xml");
let menuUi = $ui.layout("菜单.xml");
let setUi = $ui.layout("设置.xml");
//先默认显示主页
layout.addView(mainUi.getView());//主页
//动态添加和移除组件(不推荐)
rail.menu((str) => {
if (str === "主页") {
layout.addView(mainUi.getView());//主页
layout.removeView(menuUi.getView());//菜单
layout.removeView(setUi.getView());//设置
}
if (str === "菜单") {
layout.addView(menuUi.getView());//菜单
layout.removeView(mainUi.getView());//主页
layout.removeView(setUi.getView());//设置
}
if (str === "设置") {
layout.addView(setUi.getView());//设置
layout.removeView(mainUi.getView());//主页
layout.removeView(menuUi.getView());//菜单
}
});
//显示界面(为了保证不出错)
ui.show();