本文介绍了列表中的任何想法在 Jetpack compose 中的项目上具有适合/包裹宽度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要实现下一个 UI 元素:
I need to implement next UI element:
- 未知大小的字符串列表
- 任何项目都应该是包装内容.
- 如果某件物品不适合该行,他将在下一行.
- 所有列表/网格都居中
推荐答案
您可以使用 FlowRow
来实现这一点.它水平呈现其子项(如 Row
),但如果它们不适合现有行,也会通过移动到新行来包装它们.
You can use FlowRow
to implement this. It renders its children horizontally (like Row
) but also wraps them by moving to the new line if they don't fit in the existing line.
要很好地处理很长的字符串(它们本身不适合单行),您可以在 Text 上设置
overflow = TextOverflow.Ellipsis
和 maxLines = 1
.
To nicely handle very long strings (that will not fit into single line themselves) you can set overflow = TextOverflow.Ellipsis
and maxLines = 1
on Text
.
@Composable
fun HashTagList(hashTags: List<String>) {
Box(modifier = Modifier.padding(8.dp)) {
FlowRow(
mainAxisAlignment = MainAxisAlignment.Center,
mainAxisSize = SizeMode.Expand,
crossAxisSpacing = 12.dp,
mainAxisSpacing = 8.dp
) {
hashTags.forEach { hashTag ->
Text(
text = hashTag,
modifier = Modifier.drawBackground(
color = colorForHashTag(hashTag),
shape = RoundedCornerShape(4.dp)
).padding(8.dp),
overflow = TextOverflow.Ellipsis,
maxLines = 1
)
}
}
}
}
这篇关于列表中的任何想法在 Jetpack compose 中的项目上具有适合/包裹宽度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!