窗口容器组件实例讲解

作者:创世魂

 

 

● 本类说明

 

本类是属于窗口容器组件的基础类,所有的容器类组件都会继承自本类。

例如:线性布局器,帧布局器,滚动容器类组件等都继承了本类中的所有方法。

除此之外“窗口”也属于容器,当前窗口中可以使用“取窗口容器组件()”方法取出当前窗口的容器。

注意:本方法取出的对象,无法监听组件“子组件被删除”“子组件被加入”事件。

注意:本类位于“安卓基本类”模块中,必须添加此模块才能使用。

 

 

● 删除子组件
● 支持子组件监听(写)
● 子组件被删除(事件)

 

“删除子组件”帮助文档:

顾名思义,通过本方法可以删除容器内的指定组件。

 

“支持子组件监听(写)”帮助文档:

顾名思义,本属性值设置为真,可监听“子组件被删除”“子组件被加入”事件。

注意:本属性无法监听窗口本身的子组件被删除,只能监听“线性布局器”“滚动容器”类的子组件被删除。

 

“子组件被删除(事件)”帮助文档:

顾名思义,当“支持子组件监听”为真时,会发送本事件。

 

界面准备如下图:

拖放一个线性布局,在布局器内依次放入“按钮1”“按钮2”“文本框1”

 

代码编写(1):

保存界面布局后,右键线性布局器,选择“事件接收方法”

 

代码编写(2):

可以将“子组件被加入”“子组件被删除”两个事件全部添加。

稍后会讲解“被加入”事件。

 

代码编写(3):

指定来源对象后,定义“文本框”变量,通过“所删除子组件”参数调用“取窗口组件()”

将取出的对象强转“文本框”后赋值给定义的文本框变量。

最后可通过“文本框组件.内容”取出被删除组件的标题信息。

 

代码编写如下图:

“按钮1”被点击下,通过“线性布局器1”调用“支持子组件监听”属性,属性值设置为真。

随后通过布局器调用“删除子组件”方法删除“文本框1”

 

运行效果如下图:

可以看到“按钮1”被点击后,成功弹出了“文本框1”的内容。

并且“文本框1”也被成功删除。

 

 

● 添加子组件
● 子组件被加入(事件)

 

“添加子组件”帮助文档:

顾名思义,通过本方法可以给当前容器添加组件。

参数1:输入要添加的组件。

参数2:如果当前为空对象,则添加在所有组件的后面。如果不为空在添加在本参数组件的前面。

 

“子组件被加入(事件)”帮助文档:

顾名思义,当“支持子组件监听”为真时,会发送监听事件。

注意:本事件无法监听窗口本身的子组件被添加,只能监听“线性布局器”“滚动容器”类的子组件被添加。

 

代码编写(1):

在上一个方法的代码上,简单修改即可。

例如:增加一个“编辑框”变量,调用本方法添加即可。

然后可以调用“置需求尺寸”方法,设置宽度和高度。

 

代码编写(2):

“子组件被加入”事件下,输入如下代码。

可以看出和“子组件被删除”事件下的代码类似,只是组件类型不同。

 

运行效果如下图:

点击“按钮1”后成功出现一个编辑框,并且新创建的“编辑框”内也出现了对应的内容。

 

 

● 删除所有子组件

 

帮助文档如下图:

顾名思义,本方法的作用就是删除容器内所有的子组件。

如果通过“取窗口容器组件()”进行删除,那么当前窗口所有组件将会被删除。

 

代码编写如下图:

直接在“取窗口容器组件()”后调用本方法即可。

当然也可以通过“线性布局器1”来调用本方法。

通过“线性布局器1”来调用,只会删除“线性布局器”内的所有组件,布局器外的不受影响。

 

运行效果如下图(GIF):

点击“按钮1”后,可以看到所有的组件都被删除了。

 

 

● 删除指定位置子组件

 

帮助文档如下图:

顾名思义,删除指定索引的子组件。

 

索引位置从0开始,组件索引按照组件排列顺序,如下图所示。

如果“文本框1”“按钮2”调换位置,那么“文本框1”就会变成“索引1”

 

代码编写如下图:

此处调用本方法删除“索引1”,此处即删除“按钮2”

 

运行效果如下图(GIF):

最终可以看到“按钮2”被删除。

 

 

● 删除指定范围子组件

 

帮助文档如下图:

顾名思义,删除指定索引范围内的子组件。

参数1:填写首个要删除的索引位置即可。

参数2:填写想要删除的数量即可。

 

代码编写如下图:

直接调用本方法,填写对应参数即可。

此处填写的参数意思就是:从“索引1”位置开始删除,并且删除“两个”组件。

 

运行效果如下图(GIF):

最终可以看到“按钮2”“文本框1”被删除。

 

 

● 取子组件

 

帮助文档如下图:

顾名思义,通过本方法可以取出子组件。

参数1:直接填写想要取的组件索引即可。

 

代码编写如下图:

直接在“按钮1”被点击下,调用本方法取“索引2”的组件。

通过设计器得知,索引2是文本框,因此需要强转“文本框”赋值给定义的“文本框组件”变量。

 

运行效果如下图(GIF):

最后“按钮1”被点击后,成功修改了“文本框1”的内容。

 

 

● 取子组件数目

 

帮助文档如下图:

注意:子组件内的子组件并不会计算。

本方法可参考“窗口操作->取窗口容器组件()”方法,此处不再详细介绍。

 

 

● 取安卓窗口容器组件

 

“取安卓窗口容器组件”帮助文档:

通过本方法可取出“安卓窗口容器组件”对象。

通过本对象可执行“创建窗口组件”或者“取窗口组件”方法。

 

“安卓窗口容器组件”帮助文档:

本对象中共有三个方法,“取窗口容器组件”会取出当前“窗口容器组件”类。

“创建窗口组件”“取窗口组件”继承自“安卓窗口组件”类。

此例程以“创建窗口组件”为例,继续点击查看帮助文档。

 

“创建窗口组件”帮助文档:

本方法共有三个参数,动态调用时“参数1”忽略。

参数2:填写指定的窗口组件类型。

例如:创建编辑框组件,直接输入“编辑框”即可。

参数3:通常情况下,为空即可。

 

代码编写如下图:

定义“编辑框”变量,调用“取安卓窗口容器组件()”方法后可以继续调用“创建窗口组件()”方法。

参数内直接输入“编辑框”即可。

然后将其赋值给“编辑框组件”变量。

紧接着可调用“添加子组件”方法,将编辑框添加到窗口。

最后可以设置编辑框内容。

 

运行效果如下图(GIF):

最后可以看到成功添加了编辑框,并且也显示了指定内容。

 

 

● 取焦点子组件

 

帮助文档如下图:

通过本方法可以取出带有焦点的组件,通常为“编辑框”组件。

如果没有焦点组件或者该组件不是火山窗口组件,则返回空对象。

 

代码编写如下图:

直接判断本方法的返回值是否为空对象,然后弹出对应提示。

在本例程中,本方法必然返回空对象,因为窗口内没有编辑框。

 

运行效果如下图:

最终的结果表明,本方法的返回值确实是空对象。

 

 

● 查找子组件位置

 

帮助文档如下图:

顾名思义,通过本方法可取出组件所在索引位置。

返回值必定大于0,如果返回值等于-1,则表示该组件不存在。

 

代码编写如下图:

定义一个整数变量,然后通过本方法查找“文本框1”组件,赋值给此变量。

随后可调用“如果”来判断此变量是否等于“-1”

如果不等于-1,就弹出当前文本框1的索引位置。

 

运行结果如下图:

按钮1被点击后,成功弹出“文本框1”的位置。

 

 

● 内边剪切子组件(写)

 

帮助文档如下图:

本属性的作用,就是来设置是否根据容器的内边距对容器内的组件进行裁剪。

本属性值默认为真,通常情况下不需要调用本属性设置,默认就是裁剪状态。

 

界面准备如下图:

首先在界面设计器固定线性布局的高度和宽度。

 

代码编写如下图:

随后直接调用“置内边距”方法分别设置四个边的边距。

 

运行结果如下图:

最后可以看到“按钮1”被点击后,所有的组件都变小了,这是因为被内边距裁剪的缘故。

 

 

● 子组件焦点(读写)

 

“子组件焦点(写)”帮助文档:

设置当前容器内的子组件焦点模式,通过“子组件焦点模式.XXX”指定。

 

“子组件焦点(读)”帮助文档:

顾名思义,读取当前的子组件焦点模式。

 

界面准备如下图:

打开界面设计器,增加两个编辑框,一个在布局器内,一个在布局器外。

 

代码编写如下图:

在成员变量“线性布局器1”中增加属性值“子组件焦点”,选择属性值“阻止子组件”

“按钮1”被点击后,分别判断当前的子组件焦点状态,然后弹出对应提示。

备注:弹出的提示,就是对应类型的帮助说明。

 

帮助文档如下图:

可以看到运行软件后,直接是“编辑框2”获得焦点。

如果设置的焦点模式为“先于子组件”“后于子组件”,那么此时必定是“编辑框1”获得焦点。

最后点击“按钮1”子组件焦点模式正常读取。