跳到主要内容

Flow Layout

注意

Flow Layout 在 Compose 1.4 中“转正”。在此之前,你需要使用 Accompanist 的实现

Flow Layout 包括 FlowRowFlowColumn ,当一行(或一列)放不下里面的内容时,会自动换行。这些流式布局还允许使用权重进行动态调整大小,以将项目分配到容器中。

以下是一个实现房地产应用程序过滤器列表的示例:

image4.png
 @Composable
 fun Filters() {
   val filters = listOf(
     "Washer/Dryer", "Ramp access", "Garden", "Cats OK", "Dogs OK", "Smoke-free"
  )
   FlowRow(
     horizontalArrangement = Arrangement.spacedBy(8.dp)
  ) {
     filters.forEach { title ->
       var selected by remember { mutableStateOf(false) }
       val leadingIcon: @Composable () -> Unit = { Icon(Icons.Default.Check, null) }
       FilterChip(
         selected,
         onClick = { selected = !selected },
         label = { Text(title) },
         leadingIcon = if (selected) leadingIcon else null
      )
    }
  }
 }

FlowRowcontentRowScope 接收器,这意味着 RowScope 的一些特有 Modifier 也可以在这里使用,比如 weight