Jetpack Compose组件-布局(Box.Column.Row)


Jetpack Compose组件-布局(Box.Column.Row)

堆叠布局(Box)

Box 是一个能够将里面的子项依次按照顺序堆叠的布局组件。

@Composable
inline fun Box(
    // 修饰符
    modifier: Modifier = Modifier,
    // 内容对齐方式
    contentAlignment: Alignment = Alignment.TopStart,
    // 是否应将传入的最小约束传递给内容
    propagateMinConstraints: Boolean = false,
    content: @Composable BoxScope.() -> Unit
): Unit

// 一个没有内容的框
@Composable
fun Box(modifier: Modifier): Unit

水平布局(Row)

Row 组件能够将里面的子项按照从左到右的方向水平排列。

@Composable
inline fun Row(
    // 修饰符
    modifier: Modifier = Modifier,
    // 水平对齐方式
    horizontalArrangement: Arrangement.Horizontal = Arrangement.Start,
    // 垂直对齐方式
    verticalAlignment: Alignment.Vertical = Alignment.Top,
    content: @Composable RowScope.() -> Unit
): Unit

垂直布局(Column)

Column 是一个布局组件,它能够将里面的子项按照从上到下的顺序垂直排列。

@Composable
inline fun Column(
    // 修饰符
    modifier: Modifier = Modifier,
    // 垂直对齐方式
    verticalArrangement: Arrangement.Vertical = Arrangement.Top,,
    // 水平对齐方式
    horizontalAlignment: Alignment.Horizontal = Alignment.Start,
    content: @Composable ColumnScope.() -> Unit
): Unit

空白布局(Spacer)

Spacer 能够提供一个空白的布局,可以使用 Modifier.width, Modifier.heightModifier.size 来填充。

@Composable
fun Spacer(modifier: Modifier): Unit

自适应布局(BoxWithConstraints)

@Composable
@UiComposable
fun BoxWithConstraints(
    // 修饰符
    modifier: Modifier = Modifier,
    // 内容对齐方式
    contentAlignment: Alignment = Alignment.TopStart,
    // 是否应将传入的最小约束传递给内容
    propagateMinConstraints: Boolean = false,
    content: @Composable @UiComposable BoxWithConstraintsScope.() -> Unit
): Unit
BoxWithConstraints {
    val rectangleHeight = 100.dp
    if (maxHeight < rectangleHeight * 2) {
        Box(Modifier.size(50.dp, rectangleHeight).background(Color.Blue))
    } else {
        Column {
            Box(Modifier.size(50.dp, rectangleHeight).background(Color.Blue))
            Box(Modifier.size(50.dp, rectangleHeight).background(Color.Gray))
        }
    }
}

可滚动布局

@Composable
fun ScrollBoxes() {
    Column(
        modifier = Modifier
            .background(Color.LightGray)
            .size(100.dp)
            .verticalScroll(rememberScrollState())
    ) {
        repeat(10) {
            Text("Item $it", modifier = Modifier.padding(2.dp))
        }
    }
}

文章作者: Vinx
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Vinx !
  目录