我正在尝试制作一个填充屏幕宽度的 editText,它的提示和输入从屏幕中心开始。
我选择 BasicTextField,因为 TextField 和 OutlinedTextFields 的样式对我来说完全没有必要。
我试过这样做。
BasicTextField(
value = loginId,
onValueChange = {
loginId = it
},
decorationBox = {
Text(text = "Input your id", modifier = Modifier.align(Alignment.CenterHorizontally).fillMaxWidth())
},
modifier = Modifier
.fillMaxWidth()
.padding(start = 19.dp,
bottom = 4.5.dp, end = 19.dp, top = 40.dp)
.background(Purple200)
.align(Alignment.CenterHorizontally),
)
这没有效果。我可以用它做什么?
答案 0 :(得分:2)
您可以将 TextAlign.Center
应用到您的 Text
。您可以使用 style
或 textAlign
属性。
类似的东西:
Text(text = "Input your id",
modifier = Modifier.fillMaxWidth(),
style = LocalTextStyle.current.copy(textAlign = TextAlign.Center))
或:
Text(text = "Input your id",
modifier = Modifier.fillMaxWidth(),
textAlign = TextAlign.Center)
同样要正常工作,因为您使用的是 decorationBox
,所以您必须在 innerTextField
中只调用一次 decorationBox
。
类似的东西:
decorationBox = { innerTextField ->
//....
if (loginId.isEmpty()) {
Text("....")
}
innerTextField() //<-- Add this
}
答案 1 :(得分:0)
Text Composable 具有 textAlign 参数,因此您可以使用此参数简单地将文本居中:
Text(text = "Input your id",
textAlign = TextAlign.Center,
)
参考:https://developer.android.com/jetpack/compose/text#text-alignment