写给Android程序员的Compose手册

84 阅读1分钟

The goal is to show how common use cases with the classic Android View system, can be done with Compose. 传统的Android View组件,与Compose组件如何一一对应:

Android ViewCompose
ButtonButton
TextViewText
EditTextTextField
ImageViewImage
LinearLayout(horizontally)Row
LinearLayout(vertically)Column
FrameLayoutBox
RecyclerViewLazyColumn
RecyclerView(horizontally)LazyRow
SnackbarSnackbar

布局

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**

来源: foso.github.io/Jetpack-Com…