滑动分页使用指导
滑动分页把几个布局当作几个页面,用户左右滑动或点标签切换。一个组件覆盖四种常见界面:
| 标签样式 | 效果 | 典型场景 |
|---|---|---|
top 顶部标签栏(默认) |
页面上方一排标签,选中项下方有指示线,可加红色角标 | 首页「推荐 / 关注 / 热门」、消息「全部 / 未读」 |
left 左侧分类栏 |
左边一列分类、右边是内容,只能点选不能滑动 | 电商分类页、菜单分类 |
dots 底部圆点 |
页面下方一排小圆点标出当前页 | 新手引导页、图文介绍 |
none 不显示标签 |
只有页面,靠滑动或代码切换 | 配合导航条、按钮自己做切换 |
和相近组件的区别:
| 组件 | 区别 |
|---|---|
| 导航条 | 只有一条导航栏,不带页面;做屏幕最底部的「首页 / 我的」导航用它,可与滑动分页联动(见案例五) |
| 图片轮播 | 每页只是一张图片,可自动播放;滑动分页的每页是任意布局 |
| 滑动菜单 | 从屏幕边缘滑出一个面板(弹窗、侧边抽屉),不是分页 |
工作原理
- 页面就是布局:在设计器里搭好几个布局(垂直布局、垂直滚动条布局等),屏幕初始化时用
添加页面(布局,标题)(
AddPage)依次放进分页。布局会从屏幕原来的位置挪进分页里, 并自动变为可见;布局里的组件照常使用,事件、属性都不变。 - 页面序号从 1 开始:当前页(
CurrentPage)、设置角标(索引,文本)(SetBadge)、 切换时(索引,标题)(PageChanged)事件里的序号都是第几页,与添加的先后顺序一致。 - 添加第一页时不触发「切换时」:第一页加进来就直接显示。首页的初始化(比如加载数据)写在添加页面的代码后面, 不要只依赖「切换时」事件。
- 所有页面常驻:切走的页面不会被销毁,回来时输入框的内容、滚动位置都还在。
- 尺寸:组件默认宽度充满、高度 180 像素。标签栏占去一部分(顶部标签栏高约 44、左侧分类栏宽约 96、 底部圆点区高约 24),页面填满剩下的区域,内容超出会被截断。做整屏的标签页时把高度设为「充满」, 内容长的页面用垂直滚动条布局当页面(见案例四)。
- 标签多了可以横向滑动:顶部标签按文字宽度排列,放不下时标签栏本身可以左右滑动;左侧分类栏放不下时可以上下滑动。
设计器显示的是“示意页面”,不会自动成为运行时页面;必须调用 AddPage。屏幕可滚动且高度为自动时,内容区按页面高度测量,至少保留 136 像素,再加标签栏或圆点区域。
快速上手
- 拖一个滑动分页到屏幕,把它的高度设为「充满」;
- 拖三个垂直布局,分别改名
垂直布局_推荐、垂直布局_关注、垂直布局_热门, 取消勾选「可见」(否则打开屏幕时会先在原位置闪一下),每个里面放一个标签写上页面内容; - 搭下面的代码块:
when Screen1.Initialize() {
滑动分页1.AddPage(垂直布局_推荐, "推荐")
滑动分页1.AddPage(垂直布局_关注, "关注")
滑动分页1.AddPage(垂直布局_热门, "热门")
}
运行后左右滑动,或点顶部的「推荐 / 关注 / 热门」切换页面。
案例一:首页标签页 + 未读角标
「关注」页有新内容时在标签上显示红色角标,切到这一页后清除。未读数超过 99 显示「99+」:
global 关注未读 = 0
when Screen1.Initialize() {
滑动分页1.AddPage(垂直布局_推荐, "推荐")
滑动分页1.AddPage(垂直布局_关注, "关注")
滑动分页1.AddPage(垂直布局_热门, "热门")
关注未读 = 5
显示关注角标()
}
procedure 显示关注角标() {
if 关注未读 == 0 {
滑动分页1.SetBadge(2, "")
} else if 关注未读 > 99 {
滑动分页1.SetBadge(2, "99+")
} else {
滑动分页1.SetBadge(2, 关注未读)
}
}
when 按钮_模拟新消息.Click() {
关注未读 = 关注未读 + 1
显示关注角标()
}
when 滑动分页1.PageChanged(索引, 标题) {
标签_状态.Text = join("正在看:", 标题)
if 索引 == 2 {
关注未读 = 0
显示关注角标()
}
}
要点:
- 角标文字可以是数字,也可以是「新」「热」这样的短字;传空文本清除;
- 切换时(索引,标题)(
PageChanged)事件的两个参数:第几页、这一页的标题, 滑动、点标签、代码设置当前页(CurrentPage)都会触发; - 标题也能在运行时改,比如在标题里带上数量:
滑动分页1.SetPageTitle(2, join("关注(", 关注未读, ")"))。
案例二:新手引导页(只在第一次打开时显示)
标签样式(TabStyle)选 dots,页面下方显示圆点。设计器里准备:
- 滑动分页的高度设为「充满」、标签样式(
TabStyle)选「圆点」; - 三个垂直布局
垂直布局_第一页、垂直布局_第二页、垂直布局_第三页(取消勾选「可见」),每页放一张图片和一段说明; - 前两页各放一个「下一页」按钮(
按钮_下一页1、按钮_下一页2),第三页放一个按钮_开始使用; - 屏幕顶部放一个
按钮_跳过,再拖一个微数据库记住是否看过引导。
when Screen1.Initialize() {
if 微数据库1.GetValue("看过引导", false) {
openAnotherScreen("Screen2")
} else {
滑动分页1.AddPage(垂直布局_第一页, "")
滑动分页1.AddPage(垂直布局_第二页, "")
滑动分页1.AddPage(垂直布局_第三页, "")
}
}
when 按钮_下一页1.Click() {
滑动分页1.CurrentPage = 2
}
when 按钮_下一页2.Click() {
滑动分页1.CurrentPage = 3
}
when 滑动分页1.PageChanged(索引, 标题) {
按钮_跳过.Visible = 索引 < 滑动分页1.PageCount
}
when 按钮_开始使用.Click() {
微数据库1.StoreValue("看过引导", true)
openAnotherScreen("Screen2")
}
when 按钮_跳过.Click() {
微数据库1.StoreValue("看过引导", true)
openAnotherScreen("Screen2")
}
要点:
- 设置当前页(
CurrentPage)会带滑动动画切过去;设成当前页本身或超出范围时什么也不做; - 圆点样式下没有标签,页面标题可以传空文本;
- 最后一页隐藏「跳过」按钮,用的是页面数量(
PageCount),以后加减引导页不用改代码。
案例三:电商左侧分类页
标签样式(TabStyle)选 left:左边一列分类,右边是该分类的商品。
这种样式只能点分类切换、不能左右滑动,免得和右边内容里的横向滑动打架。
设计器里:滑动分页高度「充满」、标签样式「左侧」;每个分类一个垂直滚动条布局(商品多时可上下滚动), 里面放商品按钮或列表显示框。
when Screen1.Initialize() {
滑动分页1.AddPage(垂直滚动条布局_水果, "水果")
滑动分页1.AddPage(垂直滚动条布局_蔬菜, "蔬菜")
滑动分页1.AddPage(垂直滚动条布局_肉禽, "肉禽蛋")
滑动分页1.AddPage(垂直滚动条布局_零食, "零食")
滑动分页1.SetBadge(4, "新")
列表显示框_水果.ElementsFromString = "苹果,香蕉,橙子,葡萄,西瓜"
}
when 滑动分页1.PageChanged(索引, 标题) {
if 索引 == 2 {
列表显示框_蔬菜.ElementsFromString = "白菜,萝卜,西红柿,黄瓜"
}
}
when 列表显示框_水果.AfterPicking() {
标签_已选.Text = join("已选:", 列表显示框_水果.Selection)
}
要点:
- 第一个分类(水果)在添加完页面后直接加载数据——添加第一页不会触发「切换时」;
- 其它分类可以在第一次切到时再加载,减少打开屏幕时的等待;
- 选中的分类左侧有一条竖线并带浅色底,颜色由选中颜色(
SelectedColor)决定。
案例四:整屏标签页,页面内容可滚动
页面内容比分页区域高时会被截断——用垂直滚动条布局当页面即可上下滚动:
- 滑动分页的高度设为「充满」;
- 每个页面用垂直滚动条布局(宽度「充满」),里面放多个标签、图片;
- 如果某一页里有横向滚动的内容(横向滚动布局、图片轮播),把可滑动(
Swipeable)设为假, 只用点标签切换,避免两种滑动手势冲突。
when Screen1.Initialize() {
滑动分页1.AddPage(垂直滚动条布局_文章, "文章")
滑动分页1.AddPage(垂直滚动条布局_评论, "评论")
滑动分页1.FontSize = 16
滑动分页1.SelectedColor = &HFFE91E63
}
案例五:与底部导航条联动
做「底部导航 + 左右滑动切页」的 App 骨架:滑动分页负责页面(标签样式(TabStyle)选「无」),
导航条停靠在屏幕底部负责切换。点导航切页、滑页也同步导航选中项:
when Screen1.Initialize() {
滑动分页1.AddPage(垂直布局_首页, "首页")
滑动分页1.AddPage(垂直布局_发现, "发现")
滑动分页1.AddPage(垂直布局_消息, "消息")
滑动分页1.AddPage(垂直布局_我的, "我的")
}
when 导航条1.ItemSelected(索引) {
滑动分页1.CurrentPage = 索引
}
when 滑动分页1.PageChanged(索引, 标题) {
导航条1.SetSelectedItem(索引)
}
两边互相设置不会死循环:设置成当前已经在的那一页时不会再触发事件。
外观定制
| 属性 | 作用 | 默认 |
|---|---|---|
标签样式(TabStyle) |
顶部 / 左侧 / 圆点 / 无,运行时也可以改 | 顶部 |
选中颜色(SelectedColor) |
选中标签文字、指示线、当前圆点 | 蓝色 &HFF2196F3 |
未选中颜色(UnselectedColor) |
其它标签文字 | 灰色 &HFF757575 |
标签栏背景颜色(TabBackgroundColor) |
顶部或左侧标签栏的底色 | 白色 |
字体大小(FontSize) |
标签文字字号 | 15 |
可滑动(Swipeable) |
能否左右滑动切换(左侧样式总是不能滑) | 真 |
角标固定为红底白字的小圆角块。深色主题的页面可以把标签栏背景设为深色、未选中颜色设为浅灰。
常见问题
| 现象 | 原因与处理 |
|---|---|
| 页面是空的 | 屏幕初始化时有没有添加页面(布局,标题)(AddPage);页面布局里有没有放组件 |
| 打开屏幕时页面内容先在屏幕上闪一下 | 页面布局在设计器里取消勾选「可见」,添加页面时会自动变为可见 |
| 页面下半截显示不全 | 分页区域不够高:把滑动分页高度设为「充满」,内容长的页面改用垂直滚动条布局 |
| 第一页的「切换时」事件没触发 | 添加第一页时不触发;首页的初始化写在添加页面之后 |
| 设置角标、改标题没反应 | 序号是否超出页面数量(PageCount)(超出时直接忽略);是否先添加了页面 |
| 同一个布局加了两次只出现一页 | 同一个布局不会重复添加 |
| 页面里的横向列表和翻页手势打架 | 把可滑动(Swipeable)设为假,只用点标签切换 |
| 左侧分类样式不能左右滑 | 设计如此:避免和右边内容的滑动冲突,点分类切换 |
| 想删掉某一页 | 不支持删除页面;可以把那一页里的内容隐藏,或用改标题提示「暂无内容」 |
| 想做屏幕最底部的导航栏 | 用导航条,可与滑动分页联动(案例五) |
平台说明
- 编译 APK 与鸿蒙 HAP 都支持;
- 这是新增的内置组件,用 AI 伴侣联机调试时需要更新到包含它的伴侣版本。
完整 .aia 源码与操作指导
设备应用的三个真实布局页面,包含标签切换、内部滚动、常驻输入、未读角标与运行时第四页。示例计数和消息明确标为本地测试数据;全部页面在初始化实际加入分页,避免仅有设计器示意页。
导入 SwipePagerAllFeatures.aia,连接最新伴侣,或编译独立安装包。真机/伴侣运行尚未实测。
| API / 功能 | 操作入口 | 预期结果 |
|---|---|---|
| AddPage、PageCount、设计器 | 初始化加入设备、消息、我的;点击追加更多 | 三页真实布局不空白;第四页只追加一次;页数读回 |
| CurrentPage、PageChanged | 点标签、左右滑动、合法索引跳转 | 实际页与标题反馈;首次第一页不依赖切换事件 |
| TabStyle、Swipeable | 顶部、左侧、圆点、无标签;开关滑动 | 左侧只点选,关闭滑动后按钮跳转仍可用;中文选择映射真实内部值 |
| SetBadge、SetPageTitle | 增加示例未读、消息页标记已读;修改标题 | 实际角标出现/消失,标题更改;圆点/无标签时无文字角标展示 |
| SelectedColor、UnselectedColor、TabBackgroundColor、FontSize | 切换主题、设置字号并读取 | 实际颜色和字体变化,全部属性读回 |
| 页面常驻、滚动与内部按钮 | 我的页改昵称切走回来;消息页内部滚动;点设备操作 | 页面内容保持,计数来自本地按钮,不伪造硬件数据 |
| Visible、Left、Top、Width、Height、WidthPercent、HeightPercent | 下方控制区隐藏恢复、尺寸按钮 | 目标独立尺寸,页面填满其内容区,控制可恢复 |
所有返回值均用于界面反馈,错误由底部错误区展示。设计器采用明确非默认配置,初始化与界面同步。API 覆盖检查按最终 AIA 检查方法、事件、属性读取与设置及设计器配置,不能替代真实设备验证。
设备应用滑动分页
导入方法:项目 → 导入项目(.aia)→ 选择下载的 .aia 源码文件。 设备应用的三个真实布局页面,包含标签切换、内部滚动、常驻输入、未读角标与运行时第四页。示例计数和消息明确标为本地测试数据;全部页面在初始化实际加入分页,避免仅有设计器示意页。 覆盖检查 40/40。首次载入及保存重开均0个错误,真实后台导入、安装包编译通过;真机/伴侣/硬件联调尚未实测。全部属性读写、方法与事件的操作入口和预期结果见组件指导。
扫码添加客服咨询