The goal is to show how common use cases with the classic Android View system, can be done with Compose. 传统的Android View组件,与Compose组件如何一一对应:
| Android View | Compose |
|---|---|
| Button | Button |
| TextView | Text |
| EditText | TextField |
| ImageView | Image |
| LinearLayout(horizontally) | Row |
| LinearLayout(vertically) | Column |
| FrameLayout | Box |
| RecyclerView | LazyColumn |
| RecyclerView(horizontally) | LazyRow |
| Snackbar | Snackbar |
布局
Android的LinearLayout,对应于Compose的Row(水平布局),Column(垂直布局)。
@Composable
fun Example() {
Row {
Text("Hello World!")
Text("Hello World!2")
}
}
@Composable
fun Example() {
Column {
Text("Hello World!")
Text("Hello World!2")
}
}
Android的相对布局,RelativeLayout,对应于Compose? 使用Compose时,我们可以通过组合Row,Column,Stack组件来实现Android传统的相对布局的效果。
Android的ScrollView,用于当屏幕无法全部展示所有Item时,这个可以使用Compose的**LazyColumn**来实现。
Android的RecyclerView,这个可以使用compose的LazyColumn或者LazyRow来实现。
如何实现传统Android View的属性wrap_content?在传统的Android View中,我们使用wrap_content,来设置宽度和高度,让它们的值为最低适配内容的值。 在Compose中,我们可以使用Modifier来实现:
Modifier.wrapContentWidth()
Android View equivalent -> android:layout_width=”wrap_content”
Modifier.wrapContentHeight()
Android View equivalent ->android:layout_height=”wrap_content”
Modifier.wrapContentSize()
Android View equivalent ->android:layout_height=”wrap_content”
Android View equivalent -> android:layout_width=”wrap_content”
@Composable
fun Example() {
Row {
Text("Text1",modifier = Modifier.wrapContentWidth())
Text("Text2",modifier = Modifier.wrapContentHeight())
}
}
Working with Text
Android传统的TextView,用来展示文本信息,对应Compose的Text。 使用Text,来展示文本信息,应用Compose时。
Android传统的EditText,对应于Compose的**TextField**