GUI:TableView_Create 这个接口是干嘛的,怎么用
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-06-29 16:42:39 |
👁️ 阅读: 1
`GUI:TableView_Create` 是用于创建 **表格视图(TableView)** 的接口,主要用于实现 **可滚动、可复用的列表**,比如背包、排行榜、聊天记录等需要大量列表项的场景。
### 函数参数说明
```lua
function GUI:TableView_Create(parent, ID, x, y, width, height, direction, cellWid, cellHei, num)
```
- **parent** (必选): 父节点对象
- **ID** (必选): 唯一标识符(字符串)
- **x, y** (必选): 控件左上角坐标
- **width, height** (必选): 控件的宽度和高度
- **direction** (必选): 滚动方向(1=垂直,2=水平)
- **cellWid, cellHei** (必选): 每个单元格的宽度和高度
- **num** (必选): 初始单元格数量
### 使用示例
```lua
-- 1. 创建父窗口
local parent = GUI:Win_Create("TableParent", 0, 0, 800, 600, false, false, true, false, false, false, 1)
-- 2. 创建TableView(垂直滚动,每个单元格100x50,初始10个)
local tableView = GUI:TableView_Create(parent, "MyTableView", 100, 100, 400, 300, 1, 100, 50, 10)
-- 3. 设置背景色(可选)
GUI:Layout_setBackGroundColor(tableView, "#333333")
GUI:Layout_setBackGroundColorOpacity(tableView, 255)
-- 4. 启用裁剪(重要!避免内容溢出)
GUI:Layout_setClippingEnabled(tableView, true)
-- 5. 设置单元格创建回调
GUI:TableView_setCellCreateCallback(tableView, function(cellIndex)
-- 这里创建每个单元格的内容
local cell = GUI:Layout_Create(nil, "cell_"..cellIndex, 0, 0, 100, 50, false)
-- 示例:在单元格中添加文字
local text = GUI:Text_Create(cell, "text", 5, 5, 16, "#ffffff", "Item "..cellIndex)
return cell
end)
-- 6. 设置单元格数量(动态更新)
GUI:TableView_setCellNum(tableView, 20) -- 更新为20个单元格
```
### 关键特性
1. **复用机制**:只创建可视区域内的单元格,滚动时复用,性能高效
2. **方向控制**:通过`direction`参数控制垂直/水平滚动
3. **动态更新**:可随时改变单元格数量
4. **事件支持**:可监听单元格点击等事件
### 实际应用场景
```lua
-- 背包物品列表
local bagTable = GUI:TableView_Create(parent, "BagTable", 50, 50, 300, 400, 1, 80, 80, 40)
-- 聊天记录(垂直列表)
local chatTable = GUI:TableView_Create(parent, "ChatTable", 20, 100, 350, 200, 1, 350, 60, 50)
-- 横向技能栏
local skillTable = GUI:TableView_Create(parent, "SkillTable", 100, 500, 400, 80, 2, 70, 70, 8)
```
**注意**:TableView需要配合`setCellCreateCallback`来定义每个单元格的内容,这是它的核心用法。单元格尺寸(cellWid/cellHei)需要根据实际内容设计,确保滚动流畅。
← 返回问答库