-
Notifications
You must be signed in to change notification settings - Fork 2
Hello world示例
Steven Zack edited this page Sep 29, 2018
·
4 revisions
package faithdroid
func (a *MainActivity) OnCreate() {
LinearLayout(a).Size(-2, -2).Append(
TextView(a).Text("text view").SetId("text"),
Button(a).Text("change text").OnClick(func() {
GetTextViewById("text").Text("clicked")
}),
).Show()
}- 是App启动时候调用的Activity
- 继承自Activity结构体,实现了IActivity接口
记住,MainActivity本身有一个主FrameLayout在外面的,也就是说,就算这里的OnCreate函数里面一句代码也不写,界面上依然会显示一个空的FrameLayout。
每创建一个UI组件的时候,都需要传入他所属的Activity。
这里咱们创建了一个LinearLayout,然后调用的他的Show()方法。这里Show()方法的本质是将这个LinearLayout添加为主FrameLayout的子组件。 因为这里和传统意义上大家理解的Show的含义不一样,大家在使用的时候需要注意这一点
另外,为了防止大家总是忘记在LinearLayout的最后调用Show()方法,我们特意添加了一个DeferShow()方法,使得你以后的代码可以如下般简洁:
package faithdroid
func (a *MainActivity) OnCreate() {
LinearLayout(a).DeferShow().Size(-2, -2).Append(
TextView(a).SetId("text").Text("text view"),
Button(a).Size(-2, -1).Text("change text").OnClick(func() {
GetTextViewById("text").Text("text changed")
}))
}如果一个Layout调用了DeferShow()方法,那么他就会在他的下一次Append的时候,自动调用Show()方法(只对下一次Append生效),防止你忘记。
基本上每一个可见组件都有的函数,用来设置组件的长和宽。第一个参数为宽,第二个参数为长。
长和宽的解析方式一样:
- 当值为-2时,意味着Match_Parent,父组件一样长(或宽),尽可能的拉到最长
- 当值为-1时,意味着Wrap_Content,和自身内容一样长(或宽),尽可能的拉到最短
- 当值为0,或者大于0的时候,则是设定长(或宽)为固定值,而且是以dp为单位的(不是像素单位哦,要注意)