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")
}
}
标签:XML,控件,20240202,savedInstanceState,添加,inputText,onCreate
From: https://www.cnblogs.com/sugar-refinery/p/18004474