控件:ComboBox 下拉框
一共有 10 种属性:控件类型 type、控件 ID id、可选项标题 list、默认选中项编号 select、两个 ComboBox 控件建立数据关联时的下级选项 data、两个 ComboBox 控件建立数据关联时的上级数据源名称 source、两个 ComboBox 控件建立数据关联时的下级数据源名称 dataSource、点击提示 prompt、控件宽度 width、控件是否换行 nowrap
主选项下拉框
参数 | 类型 | 必填 | 说明 | 默认值 |
---|---|---|---|---|
type | string | 是 | 控件类型:ComboBox | - |
id | string | 否 | 为控件指定 ID,可以理解为控件的名称, 在返回类型为 table 时将作为返回 table 中的 key, 控件ID 以 table 格式返回返回值时必填,否则无法获取返回值 |
- |
list | string | 是 | 文字选项,多个可选项之间用英文半角逗号分割 | - |
select | string | 否 | 默认选项编号,只允许填写一个,序号从 0 开始, 与可选项标题中的顺序保持一致 |
"0" |
data | string | 否 | 关联项 ,下拉框子选项内容 | - |
source | string | 否 | 标志名,主选项下拉框控件 source 属性必须 与子选项下拉框的 dataSource 属性一致 |
- |
prompt | boolean | 否 | 点击提示,默认为 false - 不弹点击提示,true - 弹点击提示 ,仅支持引擎版本 Android v3.1.3 及 iOS v3.0.6 及其以上版本。 |
"false" |
width | number | 否 | 控件宽度,当 showUI 全局属性 style 为 default 时, 如需将多个控件放入同一行显示,可用此属性调整控件宽度。 仅支持引擎版本 iOS v2.2.6, Android v1.2.4 及其以上版本; -1 为自适应屏幕,0 为占用整行, 大于等于 1 按照数字设置宽度,不填默认占整行, -1、0、及大于等于 1 参数仅支持 Androidv3.2.0、iOSv3.1.5 以及以上版本。 |
0 |
nowrap | number | 否 | 控件是否换行,当此属性为 1 时, 将指定下一个控件不换行,用于将多个控件放入一行显示。 仅支持引擎版本 iOS v2.2.6, Android v1.2.5 及其以上版本。 |
0 |
子选项下拉框
参数 | 类型 | 必填 | 说明 | 默认值 |
---|---|---|---|---|
type | string | 是 | 控件类型:ComboBox | - |
id | string | 否 | 为控件指定 ID,可以理解为控件的名称, 在返回类型为 table 时将作为返回 table 中的 key, 控件ID 以 table 格式返回返回值时必填,否则无法获取返回值 |
- |
select | string | 否 | 默认选项编号,只允许填写一个,序号从 0 开始, 与可选项标题中的顺序保持一致 |
"0" |
dataSource | string | 否 | 两个 ComboBox 控件建立数据关联时的下级数据源名称, 主选项下拉框控件 source 属性必须与 子选项下拉框的 dataSource 属性一致 |
- |
prompt | boolean | 否 | 点击提示,默认为 false - 不弹点击提示,true - 弹点击提示, 仅支持引擎版本 Android v3.1.3 及 iOS v3.0.6 及其以上版本。 |
"false" |
返回值 | 类型 | 说明 |
---|---|---|
id | 字符串 | 根据控件 ID 返回选择选项的内容,"0" 表示选择了第一个选项,"1" 表示选择了第二个选项,以此类推 |
函数用例
local ts = require("ts")
local cjson = ts.json
w,h = getScreenSize();
MyTable = {
["style"] = "default",
["width"] = w,
["height"] = h,
["cancelname"] = "取消",
["okname"] = "开始",
["title"] = "居中自定义字号",
["titlealign"] = "center",
["align"] = "center",
["titlesize"] = 12,
["titles"] = "下拉框,第二页",
["pagetype"]= "multi",
["selpage"] = 1,
["orient"] = 0,
["btnbkcolor"] = "255,255,255",
["bgcolor"] = "255,255,255",
["pagenumtype"] = "tab",
["config"] = "showuiTest1.txt",
["timer"] = 99,
["rettype"] = "table",
pages =
{
{
{
["type"] = "Label",
["text"] = "点击右上角闹钟关闭倒计时↗",
["size"] = 20,
["align"] = "center",
["color"] = "255,0,0",
},
{
["type"] = "Label",
["text"] = "二级下拉框-ComboBox",
["size"] = 20,
},
{
["type"] = "ComboBox", -- 必填,控件类型,下拉框
["id"] = "cb2",
-- 选填,无,控件ID 以 table 格式返回返回值时必填,否则无法获取返回值
["list"] = "北京,上海", -- 必填,无,下拉框内容
["select"] = "0", -- 选填,0,默认选中项 ID
["data"] = "北京1,北京2#"..
"上海1,上海2",
["source"] = "这里必须一致",
-- 必填,无,主选项下拉框控件 source 属性必须与子选项下拉框的 dataSource 属性一致
["prompt"] = true,
},
{
["type"] = "ComboBox", -- 必填,控件类型,下拉框
["id"] = "cb3",
-- 选填,无控件 ID,以 table 格式返回返回值时必填,否则无法获取返回值
["select"] = "0",
-- 选填,无,子选项下拉框默认选中项
["dataSource"] = "这里必须一致",
--必填,无,主选项下拉框控件 source 属性必须与子选项下拉框的 dataSource 属性一致
["prompt"] = true,
},
}
}
}
local MyJsonString = cjson.encode(MyTable);
UIret,values = showUI(MyJsonString)
if UIret == 1 then
local cb2 = values.cb2
local cb3 = values.cb3
if cb2 == "0" and cb3 == "0" then
dialog("北京".."\r\n".."北京1")
elseif cb2 == "0" and cb3 == "1" then
dialog("北京".."\r\n".."北京2")
elseif cb2 == "1" and cb3 == "0" then
dialog("上海".."\r\n".."上海1")
elseif cb2 == "1" and cb3 == "1" then
dialog("上海".."\r\n".."上海2")
end
end
注意事项
默认选中项编号 select 只允许填写一个,序号从 0 开始(此控件需引擎版本 iOS v2.1.3 以上支持)。
上一级的必须要有 data 数据给下级使用,而且 list 里面逗号分割的个数必须要和 data 里面 # 号分割的个数保持一致,上一级的 source 和下一级的 dataSource 要保持一致。
使用了 dataSource 就不可以使用 list(data、source、dataSource 属性需引擎版本 iOS v2.1.8, Android v1.2.4 以上版本支持)。
示例中 cb2 和 cb3 是控件ID,根据控件 ID 获取选择的控件。
width 为 -1 时安卓根据此行控件数量平分屏幕宽度,iOS 是根据文字长度显示宽度。