第一行代码 读后感

UI开发的学习,XML和Jetpack Compose

XML编写界面的基础

使用XML添加控件,在对应的XML文件中添加控件元素,然后添加对应的属性改变样式

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	...>
	...
	<TextView
		android:id="@+id/textView"
		android:layout_width="match_parent"
		android:layout_height="wrap_content"
		android:gravity="center"
		android:textColor="#00ff00"
		android:textSize="24sp"
		android:text="This is TextView"/>
	<Button
		android:id="@+id/button"
		android:layout_width="match_parent"
		android:layout_height="wrap_content"
		android:text="Button" />
	<EditText
		android:id="@+id/editText"
		android:layout_width="match_parent"
		android:layout_height="wrap_content"/>
	...
</LinearLayout>

之类书上抄的的这样的东西
然后在Activity中通过“函数式API”或者“实现接口”的方法注册控件的事件,kotlin-android-extensions提供了根据布局文件中的控件ID创建同样名称的变量功能,可以直接使用这个控件的实例。
函数式API注册按钮事件:

override fun onCreate(savedInstanceState: Bundle?) {
	super.onCreate(savedInstanceState)
	setContentView(R.layout.activity_main)
	button.setOnClickListener {
		// 在此处添加逻辑
	}
}

实现View.OnClickListener接口注册按钮事件

override fun onCreate(savedInstanceState: Bundle?) {
	super.onCreate(savedInstanceState)
	setContentView(R.layout.activity_main)
	button.setOnClickListener(this)
}
override fun onClick(v: View?) {
	when (v?.id) {
		R.id.button -> {
			// 在此处添加逻辑
		}
	}
}

通过editText实例获取输入的内容

val inputText = editText.text.toString()

用Jetpack Compose做同样的事情

Column {  
	Text("This is a Text",  
		textAlign = TextAlign.Center,  
		color = Color.Green,  
		fontSize = 24.sp,  
		modifier = Modifier.fillMaxWidth()  
	)  
	var inputText by remember { mutableStateOf("")}  
	TextField(value = inputText,  
		onValueChange = {newText -> inputText = newText},  
		modifier = Modifier.fillMaxWidth()  
	)  
	Button(modifier = Modifier.fillMaxWidth(),
		onClick = {
			Toast.makeText(this@MainActivity,inputText,Toast.LENGTH_SHORT).show()
		}) {  
			Text(text = "Button")  
		}
}
posted @ 2024-04-26 11:29  satou_matsuzaka  阅读(18)  评论(0编辑  收藏  举报

This is a Test

メイドノココロハ アヤツリドール