我正在创建一个下拉菜单,其中每个项目都包含文本元素和图标(中间有一个空格),但只有第一个文本完全显示。只有当有其他项目占用更多的空间时,该图标才可见。
@Preview(showSystemUi = true)
@Composable
fun MyScreen() {
Box(Modifier.fillMaxSize(), Alignment.Center) {
Box() {
var expanded by remember { mutableStateOf(false) }
IconButton(onClick = { expanded = !expanded }) {
Icon(imageVector = Icons.Default.MoreVert, contentDescription = null)
}
DropdownMenu(expanded = expanded, onDismissRequest = { expanded = false }) {
MyMenuItem("item 1") // Icon visible
MyMenuItem("item 2") // Icon visible
MyMenuItem("item 3 long text") // Icon width shrunk to 0
MyMenuItem("item 4 long te") // Icon visible but shrunk
}
}
}
}
@Composable
fun MyMenuItem(text: String) {
DropdownMenuItem(onClick = { }) {
Text(text)
Spacer(modifier = Modifier.weight(1f))
Icon(imageVector = Icons.Default.Check, contentDescription = null) // <-- Icon
}
}
注意:
- 我还尝试使用
Row()
和Surface()
替换DropdownMenuItem()
,但结果相似。 - 给
MyMenuItem()
设置宽度可以解决问题;但我希望它能根据内容自动调整大小。
IntrinsicSize
的bug。谢谢你告诉我!在这个bug被修复之前,这可能对其他人有用。 - Shreyash.K