如何在撰写中将文本居中放置在 DropdownMenuItem 中

How to center text inside DropdownMenuItem in compose

目前,当我创建 DropdownMenu 时,它总是在开头显示文本。 我希望它居中,但没有找到任何资源来回答这个问题。

下拉项采用可组合项,您可以使用 Box 并将内容对齐方式设置为居中

    DropdownMenu(
        expanded = expanded,
        onDismissRequest = { expanded = false },
        modifier = Modifier.fillMaxWidth())
    ) {
        items.forEachIndexed { index, s ->
            DropdownMenuItem(onClick = {
                selectedIndex = index
                expanded = false
            }) {
                val disabledText = if (s == disabledValue) {
                    " (Disabled)"
                } else {
                    ""
                }
                Box(contentAlignment = Alignment.Center) {
                    Text(text = s + disabledText)
                }
            }
        }
    }

默认情况下,Box 换行内容大小,因此对于内部的单个视图,没有额外的修饰符,contentAlignment 没有区别。要使@Francesc 的答案生效,您需要将 Modifier.fillMaxWidth() 应用于方框:

DropdownMenuItem(onClick = {}) {
    Box(
        contentAlignment = Alignment.Center, 
        modifier = Modifier.fillMaxWidth()
    ) {
        Text(text = "text")
    }
}

或者,您可以在不使用 Box 的情况下使用 textAlign 参数执行此操作,并且您还需要 Modifier.fillMaxWidth():

DropdownMenuItem(onClick = {}) {
    Text(
        text = "text",
        textAlign = TextAlign.Center,
        modifier = Modifier.fillMaxWidth()
    )
}