列表容器
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-06-14 14:53:42 |
👁️ 阅读: 1
在浮生梦老师前端课程中,创建和使用列表容器主要涉及 `GUI:ListView_Create` 函数。以下是创建和操作列表容器的完整示例:
```lua
-- 1. 首先创建父节点作为容器
local parent = GUI:Win_Create("GMMain", 0, 0, 0, 0, false, false, true, false, false, false, 1)
-- 2. 创建列表容器
local listView = GUI:ListView_Create(parent, "MyListView", 100, 200, 300, 400, 1, 100, 50, 5)
```
**函数参数说明 (GUI:ListView_Create):**
- `parent`: 父节点对象
- `"MyListView"`: 列表容器的唯一ID
- `100`: 位置的横坐标 (x)
- `200`: 位置的纵坐标 (y)
- `300`: 容器宽度
- `400`: 容器高度
- `1`: 滚动方向 (1:垂直; 2:水平)
- `100`: 单个cell的宽度
- `50`: 单个cell的高度
- `5`: 需要预创建的cell个数
**基础操作:**
```lua
-- 添加单个子项到末尾
local childItem = GUI:Widget_Create(listView, "item_1", 0, 0, 100, 50)
GUI:ListView_pushBackCustomItem(listView, childItem)
-- 在指定位置插入子项
local newItem = GUI:Widget_Create(listView, "item_2", 0, 0, 100, 50)
GUI:ListView_insertCustomItem(listView, newItem, 1) -- 插入到第一个位置
-- 删除所有子项
GUI:ListView_removeAllItems(listView)
-- 通过索引删除子项
GUI:ListView_removeItemByIndex(listView, 2) -- 删除第二个子项
-- 跳转到指定位置的子项
GUI:ListView_jumpToItem(listView, 3) -- 跳转到第三个子项
```
**样式和事件设置:**
```lua
-- 设置背景图片(使用案例中的资源)
GUI:ListView_setBackGroundImage(listView, "res/public/1900000610.png")
-- 设置背景图片九宫格
GUI:ListView_setBackGroundImageScale9Slice(listView, 10, 10, 10, 10)
-- 设置滚动事件监听
GUI:ListView_addOnScrollEvent(listView, function(widget)
SL:print("列表容器滚动了")
end)
-- 设置滚动到顶部(1秒内,带减速效果)
GUI:ListView_scrollToTop(listView, 1.0, true)
-- 设置滚动到底部
GUI:ListView_scrollToBottom(listView, 1.0, true)
```
**高级功能:**
```lua
-- 设置滚动到垂直方向50%位置
GUI:ListView_scrollToPercentVertical(listView, 50, 0.5, true)
-- 设置滚动到水平方向30%位置
GUI:ListView_scrollToPercentHorizontal(listView, 30, 0.5, true)
-- 启用鼠标滚轮滑动
GUI:ListView_addMouseScrollPercent(listView)
-- 刷新容器布局
GUI:ListView_doLayout(listView)
-- 手动绘制可见区域
GUI:ListView_paintItems(listView)
-- 自动绘制可见区域
GUI:ListView_autoPaintItems(listView)
```
**注意事项:**
1. 创建列表容器前必须先有父节点
2. `cellWid` 和 `cellHei` 参数决定了每个列表项的尺寸
3. `direction` 参数控制滚动方向,1为垂直,2为水平
4. 使用 `GUI:ListView_removeChild` 可以删除指定的子节点对象
5. 记得使用 `GUI:Win_IsNull()` 检查控件是否有效
这样你就创建了一个功能完整的列表容器,可以实现滚动列表、动态添加删除项等常见UI功能。
← 返回问答库