动态创建组件
在轻语言安卓程序中,除了在设计器中可视化拖拽设计界面外,也可以在代码中动态创建组件,然后将其添加到窗口中。
动态创建组件的优点
-
灵活性:
-
动态创建组件允许开发者根据运行时条件(如用户输入、网络请求结果等)动态调整UI。
-
可以更灵活地控制组件的属性和行为。
-
-
减少资源占用:
- 如果某些组件只在特定条件下显示,动态创建可以避免在XML中预先定义这些组件,从而减少资源占用。
-
动态布局:
- 当布局需要根据数据动态变化时(如列表项、网格布局等),代码创建组件可以更高效地实现。
-
复用性:
- 动态创建的组件可以封装成方法或类,便于复用。
适用场景
-
动态列表或网格:
- 当列表项或网格项的内容和数量不确定时(如从服务器获取数据),适合动态创建组件。
-
条件性UI:
- 当某些组件只在特定条件下显示时(如用户登录后才显示的按钮),适合动态创建。
-
自定义视图:
- 当需要创建复杂的自定义视图(如自定义图表、动态表格等),代码创建更灵活。
-
动态布局调整:
- 当布局需要根据屏幕尺寸、设备方向或用户设置动态调整时,代码创建更合适。
-
游戏或动画:
- 在游戏开发或需要频繁更新UI的场景中,动态创建组件可以更好地控制UI的变化。
-
减少XML嵌套:
- 当XML布局嵌套过深导致性能问题时,可以通过代码创建组件来优化布局结构。
使用方式
动态添加按钮
- 在窗口中添加一个垂直滚动框组件(垂直滚动框1),根据用户输入的数量或指定数量动态创建多个按钮,并添加到垂直滚动框中。(注意:这里也可以直接添加到窗口根布局中、但是添加到根布局中需要手动计算位置,而垂直滚动框添加的组件会自动在滚动框从上到下排列,且添加的内容超过滚动框高度时、内容可以上下滑动)
函数 动态创建按钮并添加到滚动框(待创建数量 为 整数型)
' 使用循环创建
变量循环(i = 0,待创建数量,1)
' 创建按钮对象、并设置相关属性
变量 局_按钮 = 创建 按钮()
局_按钮.标题 = "按钮" + i
' 设置当按钮被单击时,接收系统回调的匿名子函数
局_按钮.置被单击回调((按钮源)->{
弹出提示(局_按钮.标题 + " 被单击")
})
' 将创建的按钮添加到垂直滚动框1中
垂直滚动框1.添加组件(局_按钮)
结束循环
结束 函数
动态创建自定义对话框
事件 按钮2.被单击(来源对象 为 视图)
变量 msgBox = 创建 对话框()
msgBox.标题 = "请选择"
msgBox.信息 = "确定要提交当前已输入的信息吗?"
msgBox.置按钮("确定","取消","")
msgBox.触摸空白域关闭 = 假
msgBox.置按钮被单击回调(&带选择结果信息框被关闭)
msgBox.显示()
结束 事件
函数 带选择结果信息框被关闭(源对象 为 对话框,按钮索引 为 整数型)
如果(按钮索引 == -1)
弹出提示("你点击了确定")
否则
弹出提示("你点击了取消")
结束 如果
结束 函数
动态使用时钟(不可视组件)
时钟是不可视组件,不可视组件可以添加到窗口中,但在运行时不会显示。
这里以通过代码的方式创建使用:
事件 按钮4.被单击(来源对象 为 视图)
计次 = 0
' 动态创建时钟对象、并通过拉姆达回调方式执行周期事件
变量 局_时钟1 = 创建 时钟()
局_时钟1.时钟周期 = 1000
局_时钟1.置周期事件回调((源对象)->{
' 注意:这里的计次只能为类成员变量
计次 = 计次 + 2
标签1.标题 = "局_时钟1:" + 计次
' 如果计次变量大于某个值则停止时钟,这里大于20
如果(计次 > 20)
局_时钟1.可用 = 假
结束 如果
})
局_时钟1.可用 = 真
结束 事件
温馨提示
在轻语言安卓中,无论是可视组件还是不可视组件,都可以通过代码方式创建使用。