Skip to content

Hello world示例

Steven Zack edited this page Sep 29, 2018 · 4 revisions

Hello world示例

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()
}

MainActivity

  • 是App启动时候调用的Activity
  • 继承自Activity结构体,实现了IActivity接口

记住,MainActivity本身有一个主FrameLayout在外面的,也就是说,就算这里的OnCreate函数里面一句代码也不写,界面上依然会显示一个空的FrameLayout。

LinearLayout(a)

每创建一个UI组件的时候,都需要传入他所属的Activity。

Show()方法

这里咱们创建了一个LinearLayout,然后调用的他的Show()方法。这里Show()方法的本质是将这个LinearLayout添加为主FrameLayout的子组件。 因为这里和传统意义上大家理解的Show的含义不一样,大家在使用的时候需要注意这一点

DeferShow()方法

另外,为了防止大家总是忘记在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生效),防止你忘记。

Size(-2,-2)

基本上每一个可见组件都有的函数,用来设置组件的长和宽。第一个参数为宽,第二个参数为长。

长和宽的解析方式一样:

  • 当值为-2时,意味着Match_Parent,父组件一样长(或宽),尽可能的拉到最长
  • 当值为-1时,意味着Wrap_Content,和自身内容一样长(或宽),尽可能的拉到最短
  • 当值为0,或者大于0的时候,则是设定长(或宽)为固定值,而且是以dp为单位的(不是像素单位哦,要注意)

Append()函数

Clone this wiki locally