滚动控制使用指导
不可见组件:读取和控制「垂直滚动条布局」「水平滚动条布局」的滚动位置——比如聊天记录加一条后自动滚到底部、 回到顶部按钮;注册布局后,滚动、到达开头或末尾时触发事件(可做「滚到底加载更多」)。
功能参照 ColinTree 的 ScrollArrangementHandlers 拓展:原版把水平、垂直拆成两个组件,每个组件只能绑定一个布局; 内置版合并为一个组件,方法直接以布局为参数,可同时管理多个布局。 位置与距离的单位和组件宽高一致;垂直布局是纵向位置,水平布局是横向位置,0 为开头。
快速上手
- 拖一个垂直滚动条布局(高度设为 300 像素),在里面放一个标签
标签_记录(勾选「HTML格式」); - 布局下方放一个文本输入框、两个按钮(
按钮_发送、按钮_回顶部)和一个滚动控制; - 搭下面的代码块:每发一条消息追加到记录末尾并自动滚到底;滚到顶时给个提示。
各案例独立使用;组合到同一屏幕时,将同名事件的处理合并到一个事件积木中。
when Screen1.Initialize() {
滚动控制1.Register(垂直滚动条布局1)
}
when 按钮_发送.Click() {
标签_记录.Text = join(标签_记录.Text, "<br>我:", 文本输入框1.Text)
文本输入框1.Text = ""
滚动控制1.ScrollToEnd(垂直滚动条布局1)
}
when 按钮_回顶部.Click() {
滚动控制1.ScrollToStart(垂直滚动条布局1)
}
when 滚动控制1.ReachedStart(布局) {
按钮_回顶部.Text = "已在顶部"
}
发几条消息,记录超过布局高度后,每次发送都会自动滚到最新一条;点「回顶部」平滑滚回开头,按钮文字变成「已在顶部」。
常见问题
| 现象 | 检查 |
|---|---|
| 调用后报「只能用于滚动布局」 | 参数必须是垂直滚动条布局或水平滚动条布局,普通布局不能滚动 |
| 滚动事件不触发 | 事件只对注册(布局)(Register)过的布局触发;只调用滚动方法不需要注册 |
| 刚加了内容,滚到底没到最后 | 滚到末尾(布局)(ScrollToEnd)会等界面排版完成再滚,一般无需处理;若内容是网络图片等异步加载的,在加载完成事件里再调一次 |
搭建与测试
在设计器拖入本组件和案例涉及的按钮、标签、布局等组件,按案例中的名称重命名。先运行最小案例,确认事件返回,再增加业务逻辑。示例中的素材先上传到项目,服务器地址、令牌、文件路径换成自己的值。
可见组件需要有非零宽高;不可见工具组件必须由属性或方法启动。设计器展示样式不等于运行时已加载数据或绑定目标。联机测试应使用包含本组件的 AI 伴侣;涉及系统入口或权限的行为还要编译安装后验证。
案例:返回顶部
放垂直滚动条布局,加入足够多的内容形成滚动;按钮位于滚动布局外。
when Screen1.Initialize() {
滚动控制1.Register(垂直滚动条布局1)
}
when 按钮_顶部.Click() {
滚动控制1.ScrollToStart(垂直滚动条布局1)
}
when 按钮_底部.Click() {
滚动控制1.ScrollToEnd(垂直滚动条布局1)
}
注册真正的滚动布局,不是普通垂直布局。内容未超过容器时没有可滚动距离;新增内容后等布局完成再滚到底部。
属性、方法与事件速查
完整参数类型、默认值和平台说明见组件参考。下表按调用入口列出用途;有完成事件的方法在事件中读取结果。
| 入口 | 用途 |
|---|---|
取滚动位置(布局)(GetScrollPosition) |
返回当前滚动位置(0 为开头)。 |
注册(布局)(Register) |
注册一个垂直/水平滚动条布局,之后它滚动时触发本组件的事件。可注册多个布局。只调用滚动方法(不需要事件)时无需注册。 |
滚动到(布局,位置)(ScrollTo) |
平滑滚动到指定位置(0 为开头)。 |
滚到末尾(布局)(ScrollToEnd) |
滚动到末尾(最下/最右)。刚往布局里加了组件也能滚到新内容(等界面排版完成后再滚)。 |
滚到开头(布局)(ScrollToStart) |
滚动到开头(最上/最左)。 |
到达末尾时(布局)(ReachedEnd) |
已注册的滚动布局滚动到末尾(最下/最右)时触发,常用于「滚到底加载更多」。 |
到达开头时(布局)(ReachedStart) |
已注册的滚动布局滚动到开头(最上/最左)时触发。 |
滚动时(布局,位置)(ScrollChanged) |
已注册的滚动布局滚动时触发。位置:垂直布局为纵向位置,水平布局为横向位置。 |
常见问题与验收
| 检查项 | 操作与预期 |
|---|---|
| 初始化 | 对照案例检查是否已经调用加载、注册、连接或显示方法;仅拖入组件不会替你执行这些步骤。 |
| 结果返回 | 将成功事件和失败事件都接到标签,记录事件参数;异步操作完成前不读取结果属性。 |
| 输入配置 | 检查素材名大小写、网址是否为直接资源地址、文件是否存在、编号和索引是否在范围内。 |
| 平台与权限 | 按组件参考中的平台说明测试;授权被拒绝时应有明确提示,不继续假定操作成功。 |
| 最小案例 | 先验证页面中的最小案例,再验证第二个场景;重复操作、取消、返回屏幕后结果应符合事件说明。 |
完整 .aia 源码与操作指导
无需账号、网络。大学名单仅作真实名称的滚动内容,不表示排名。大学列表独立占半屏;操作按钮始终在列表外,控制的是大学列表。滚动位置单位安卓dp、鸿蒙vp。
导入 ScrollHandlerAllFeatures.aia,连接最新伴侣,或编译独立安装包。真机/伴侣运行尚未实测。
| API / 功能 | 操作入口 | 预期结果 |
|---|---|---|
| Register | 启动 | 登记大学滚动布局;上方滚动仅容纳操作区,不登记 |
| ScrollToStart / ReachedStart | 先滚动再点开头 | 大学列表回到开头,显示真实边界事件 |
| ScrollToEnd / ReachedEnd | 点末尾 | 大学列表到最后一条,显示末尾事件 |
| ScrollTo / GetScrollPosition | 输入300点指定,动画结束后读取 | 显示实际位置;超出内容长度由系统限制 |
| ScrollChanged | 手动滚大学列表 | 展示真实位置与事件次数 |
| 无效输入 | 输入负数或非数字 | 提示原因,不发错误滚动请求 |
所有返回值均用于界面反馈,错误由底部错误区展示。设计器采用明确非默认配置,初始化与界面同步。API 覆盖检查按最终 AIA 检查方法、事件、属性读取与设置及设计器配置,不能替代真实设备验证。
滚动控制
导入方法:项目 → 导入项目(.aia)→ 选择下载的 .aia 源码文件。 无需账号、网络。大学名单仅作真实名称的滚动内容,不表示排名。大学列表独立占半屏;操作按钮始终在列表外,控制的是大学列表。滚动位置单位安卓dp、鸿蒙vp。 覆盖检查 8/8。首次载入及保存重开均0个错误,真实后台导入、安装包编译通过;真机/伴侣/硬件联调尚未实测。全部属性读写、方法与事件的操作入口和预期结果见组件指导。
扫码添加客服咨询