在应用运行期间,使用代码动态的生成可视组件并设置属性,不需要提前在设计界面拖入很多组件。

所有功能块

创建组件

compcreator.creator.png

component:是要创建的组件的类型(文本字串),这里推荐使用选项下拉框输入.

in:是新组件的父容器,需要是个容器类组件。

Known issue:

The dynamic component will not be listed by "Every Component", which is newly added in MIT AI2 2.66.

移除组件

compcreator.remove.png

component:要删除的组件,而不是他的类型。如果他是容器类,他的所有子组件也会被移除。

设置属性

这个块的大部分功能可以使用内置的任意组件块来实现。
compcreator.set.png

component:要设置属性的组件

property:要设置的组件的属性。可以是以下3种情侣:

  1. 可以是组件的自带的属性,必须是英文(推荐使用下拉框输入);
  2. 可以是“index”,用来设置组件的排列顺序;
  3. 可以是其他自定义的属性,比如id,parent之类的任意文本,中英皆可。相当于附在组件上的一个字典(键值对)。

value:新的属性值

获取属性

compcreator.get.png

这个块的大部分功能可以使用内置的任意组件块来实现。

获取子组件列表和父组件

compcreator.parent.png
compcreator.child.png

只适用于获取动态生成的子组件列表或他的父组件

从8.4版本以后,可以支持所有组件(动态的或者手动添加的)获取子组件和父组件。

已知问题:在伴侣中获取Screen的子部件会返回错误的列表。apk中没有问题。

从模板创建

compcreator.createwith.png

返回值是创建的最外成的组件

模板(Template)是一个json字符串。

可以根据以下格式手动编写,或者在MIT服务器上的设计界面手动添加需要的界面(一条记录),根据需要设置相应的组件属性。选中最外层组件,键盘上按下Ctrl + C,然后在任何文本编辑器里面按键盘上的Ctrl+V,就可以得到模板了
1661143976646823.png

(以下模板中的$Name,$Version,Uuid,$blocks几个键是从mit自动转换来的,模板中并不需要。你可以把它们删掉,也可以保留,扩展会自动忽略他们。)$Components 和$Type是必须保留的。
1661057866899207.png

如果你想在运行时替换模板中的属性值,可以像下图这样,替换成{1}, {2}, {3}...这样。
1661057908378988.png

然后这样使用模板:
image-20220917190300136.png

下载地址:

扩展aix:
cn.kevinkun.CompCreator-v8.4.aix

cn.kevinkun.CompCreator-v8.5.aix

示例aia:
compCreator.aia

Credit:

This extension is inspired on the fabulous work of Yusuf Cihan: https://github.com/ysfchn/DynamicComponents-AI2

标签: none

添加新评论