Android Compose中如何让图标紧跟文本末尾显示?
解决Compose中图标紧跟文本末尾的问题
你现在的问题出在给Text加了weight(1f)——这个修饰符会强制文本占据Row里的所有剩余空间,所以图标只能挤到最右侧。想要图标紧跟文本,直接去掉这个weight就行。
修改后的代码:
@Preview(showBackground = true, fontScale = 2f) @Composable fun Test(){ Row( modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically ) { Text( text = "asjd hasjdh asjdh aksjdhaskdj haskdj" // 去掉weight(1f),文本只占自身内容宽度 ) Icon( modifier = Modifier .padding(start = 4.dp) .size(16.dp), painter = painterResource(id = R.drawable.ic_trolley_check_circle), tint = MaterialTheme.textColor.success, contentDescription = null, ) } }
为什么你用weight(1f, false)没用?因为weight的fill参数只是控制组件是否填充分配到的权重空间,本质上Row还是会按权重给Text分配最大的可用空间——哪怕Text不填充这个空间,剩下的空白还是会留在Text和Icon之间,图标照样在最右。
如果需要文本在空间不足时自动换行,同时图标始终跟在文本的最后一行末尾,可以把Text和Icon放到一个内层Row里,再给内层Row设置wrapContentWidth():
@Preview(showBackground = true, fontScale = 2f) @Composable fun Test(){ Row( modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically ) { Row( modifier = Modifier.wrapContentWidth(), verticalAlignment = Alignment.CenterVertically ) { Text( text = "asjd hasjdh asjdh aksjdhaskdj haskdj asjd hasjdh asjdh aksjdhaskdj haskdj", maxLines = 2 // 可选,限制行数 ) Icon( modifier = Modifier .padding(start = 4.dp) .size(16.dp), painter = painterResource(id = R.drawable.ic_trolley_check_circle), tint = MaterialTheme.textColor.success, contentDescription = null, ) } } }
这样不管文本长短,图标都会紧紧跟着文本末尾,不会被挤到最右侧。
内容的提问来源于stack exchange,提问作者sadat
相关产品推荐
相关产品推荐

