Hen*_*aro 4 android kotlin android-jetpack-compose android-jetpack-compose-list
我正在使用 firebase 构建一个聊天应用程序,我需要在编写消息时最后和在接收时开始时对齐聊天气泡,就像在 Whatsapp 中一样。如果我在lazyColumn中使用horizontalArrangement,它会影响所有项目。我尝试在聊天气泡中使用modifier.align,但没有任何反应。我怎样才能做到这一点?
下面是我的懒惰专栏
LazyColumn(
modifier = Modifier.fillMaxWidth(),
) {
if (list != null && list.isNotEmpty()) {
items(items = list) {
if (it.user1id == args.userId) {
ChatCard(
message = it,
color = Color.Magenta,
modifier = Modifier
.align(Alignment.CenterHorizontally)
.padding(
start = 32.dp,
end = 4.dp,
top = 4.dp
)
)
} else {
ChatCard(
message = it,
color = Color.White,
Modifier.padding(
start = 4.dp,
end = 32.dp,
top = 4.dp
)
)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
@Composable
fun ChatCard(message: Message, color: Color, modifier: Modifier = Modifier){
Card(
modifier = modifier,
backgroundColor = color,
shape = RoundedCornerShape(10.dp)
) {
Row(
modifier = Modifier.padding(4.dp),
horizontalArrangement = Arrangement.SpaceBetween
) {
Text(
modifier = Modifier
.padding(4.dp)
.widthIn(0.dp, 280.dp),
text = message.message
)
Text(
modifier = Modifier.padding(4.dp),
text = message.time,
style = TextStyle(
fontSize = 12.sp,
color = Color.LightGray
)
)
}
}
}
Run Code Online (Sandbox Code Playgroud)
Row
您可以为每个项目添加一个应用不同的horizontalArrangement
删除.Modifier.align
Card
就像是:
items(items = itemsList) {
Row(Modifier.fillMaxWidth(),
horizontalArrangement = if (it == ....)
Arrangement.Start else
Arrangement.End) {
if (it == ....) {
ChatCard(
color = Color.Magenta,
modifier = Modifier
.padding(
start = 32.dp,
end = 4.dp,
top = 4.dp
)
)
} else {
ChatCard(
color = Color.White,
Modifier.padding(
start = 4.dp,
end = 32.dp,
top = 4.dp
)
)
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1563 次 |
最近记录: |