【发布时间】:2021-09-10 01:59:29
【问题描述】:
编辑
我仍在努力让它发挥作用。我现在有并且我在标签的Text 上收到错误。我在一个标有@Composable 的函数中。 TextField 也有类似的问题。
@Composable 调用只能在 @Composable 函数的上下文中发生
TextField(
value = "Text(text = \"\")",
onValueChange = { },
label = { Text("Label") },// copied from android developer website
Modifier
.padding(0.dp)
.padding(end = dimensionResource(id = R.dimen.child_edge_padding))
)
}
结束编辑
我正在尝试制作一个登录屏幕,我正在使用TextField 允许用户输入电子邮件和密码。我看不出我所拥有的有什么问题,但我遇到了错误
以下函数都不能使用参数调用 提供。
这是我的代码的一部分:
Row(Modifier.padding(dimensionResource(id = R.dimen.container_edge_padding))) {
Text(
text = "${stringResource(id = R.string.email)}} : ",
Modifier
.padding(0.dp) // equivalent to padding inside
.padding(end = dimensionResource(id = R.dimen.child_edge_padding)) // second padding acts as to margin putting space on the inside of the item
)
TextField(
value = "",
placeholder = stringResource(id = R.string.login_email_hint),
Modifier
.padding(0.dp)
.padding(end = dimensionResource(id = R.dimen.child_edge_padding))
)
}
当我将鼠标悬停在它上面时,这就是我所看到的。
使用参数的名称,我使用哪些参数或它们相对于声明的位置无关紧要。如果我这样更改它,因为前 3 个参数是值、占位符、修饰符,它可以工作。但两者都应该工作,因为这就是命名参数的工作方式。提供默认值允许这样做。我可以让它工作的唯一方法是按照声明的顺序使用参数。这意味着如果我想使用placeHolder,我必须使用它之前的每个参数的名称,按照它声明的顺序,以便使用它。唯一必须正确声明的是 value 和 onValueChange,因为它们是唯一没有声明默认值的 2 个。
TextField(
value = "",
onValueChange = {},
Modifier
.padding(0.dp)
.padding(end = dimensionResource(id = R.dimen.child_edge_padding))
)
【问题讨论】:
标签: android kotlin parameters default-value android-jetpack-compose