Kotlin Compose,对齐行中的项目
Kotlin Compose, Align items in row
我正在使用新品牌 Kotlin Compose
作为我的观点,我有一排有 2 个项目,我怎样才能使它们像 center-vertical
一样?
Row(
modifier = Spacing(20.dp)
) {
Text(text = "Hello $name!")
Spacing(10.dp)
Padding(padding = 25.dp) {
Button(text = "Click", onClick = { /*do something*/ })
}
}
请注意,如果没有填充,它们也不会对齐。
您可以使用 Align
可组合项
Align(Alignment.TopCenter) { //You can change the alignment to fit your needs.
Row(modifier = Spacing(20.dp)) {
Text(text = "Hello $name!")
Spacing(10.dp)
Padding(padding = 25.dp) {
Button(text = "Click", onClick = { /*do something*/ })
}
}
}
上面的代码应该对齐整行,但是如果您希望它们相对于 row.
居中对齐,则需要单独包装每个组件
在 compose 版本 1.0 上,这是一个解决方案...
Row(
modifier = Modifier.padding(20.dp),
verticalAlignment = Alignment.CenterVertically
) {
Text(text = "Hello Android!",
modifier = Modifier.padding(end = 10.dp))
Button(text = { Text("Click") },
onClick = { /*do something*/ },
modifier = Modifier.padding(25.dp)
)
}
对于 1.0.0-beta02
,您可以使用类似的东西:
Row(
modifier = Modifier.padding(20.dp),
verticalAlignment = Alignment.CenterVertically
) {
Text(text = "Hello!")
Spacer(modifier = Modifier.width(10.dp))
Button(onClick = { /*do something*/ },
modifier = Modifier.padding(25.dp)) {
Text(text = "Click")
}
}
Row. You can also configure an item alignment individually using align 修饰符中的 verticalAlignment
参数覆盖了行的 verticalAlignment
。例如:
@Composable
fun RowAlignmentExample() {
Row(verticalAlignment = Alignment.CenterVertically) {
SizeTile(14)
SizeTile(18)
SizeTile(22)
SizeTile(26)
SizeTile(10, modifier = Modifier.align(Alignment.Top))
SizeTile(10, modifier = Modifier.align(Alignment.Bottom))
}
}
@Composable
fun SizeTile(fontSize: Int, modifier: Modifier = Modifier) {
Text(
text = fontSize.toString(),
fontSize = fontSize.sp,
modifier = modifier
.padding(2.dp)
.background(Color.White, RoundedCornerShape(4.dp))
.padding(2.dp)
)
}
在 1.0.1 中,您可以这样使用 verticalArrangement:
Row(
Modifier
.fillMaxWidth()
.height(70.dp),
verticalArrangement = Arrangement.Center
) {
...
}
我正在使用新品牌 Kotlin Compose
作为我的观点,我有一排有 2 个项目,我怎样才能使它们像 center-vertical
一样?
Row(
modifier = Spacing(20.dp)
) {
Text(text = "Hello $name!")
Spacing(10.dp)
Padding(padding = 25.dp) {
Button(text = "Click", onClick = { /*do something*/ })
}
}
请注意,如果没有填充,它们也不会对齐。
您可以使用 Align
可组合项
Align(Alignment.TopCenter) { //You can change the alignment to fit your needs.
Row(modifier = Spacing(20.dp)) {
Text(text = "Hello $name!")
Spacing(10.dp)
Padding(padding = 25.dp) {
Button(text = "Click", onClick = { /*do something*/ })
}
}
}
上面的代码应该对齐整行,但是如果您希望它们相对于 row.
在 compose 版本 1.0 上,这是一个解决方案...
Row(
modifier = Modifier.padding(20.dp),
verticalAlignment = Alignment.CenterVertically
) {
Text(text = "Hello Android!",
modifier = Modifier.padding(end = 10.dp))
Button(text = { Text("Click") },
onClick = { /*do something*/ },
modifier = Modifier.padding(25.dp)
)
}
对于 1.0.0-beta02
,您可以使用类似的东西:
Row(
modifier = Modifier.padding(20.dp),
verticalAlignment = Alignment.CenterVertically
) {
Text(text = "Hello!")
Spacer(modifier = Modifier.width(10.dp))
Button(onClick = { /*do something*/ },
modifier = Modifier.padding(25.dp)) {
Text(text = "Click")
}
}
Row. You can also configure an item alignment individually using align 修饰符中的 verticalAlignment
参数覆盖了行的 verticalAlignment
。例如:
@Composable
fun RowAlignmentExample() {
Row(verticalAlignment = Alignment.CenterVertically) {
SizeTile(14)
SizeTile(18)
SizeTile(22)
SizeTile(26)
SizeTile(10, modifier = Modifier.align(Alignment.Top))
SizeTile(10, modifier = Modifier.align(Alignment.Bottom))
}
}
@Composable
fun SizeTile(fontSize: Int, modifier: Modifier = Modifier) {
Text(
text = fontSize.toString(),
fontSize = fontSize.sp,
modifier = modifier
.padding(2.dp)
.background(Color.White, RoundedCornerShape(4.dp))
.padding(2.dp)
)
}
在 1.0.1 中,您可以这样使用 verticalArrangement:
Row(
Modifier
.fillMaxWidth()
.height(70.dp),
verticalArrangement = Arrangement.Center
) {
...
}