如何在 Jetpack Compose 中使文本可点击?我还想在选择一次后将其切换为不可点击
How do you make a text clickable in jetpack compose ? I would also like to toggle it to non clickable after selecting once
Text(
text = "Resend OTP",
fontSize = 20.sp,
color = Textfieldcolor,
style = TextStyle(textDecoration = TextDecoration.Underline)
)
//这是我的代码这个文本应该可以选择一次然后被禁用。
就像@Arpit 提到的那样,最好使用 TextBotton
来达到这个目的。
但是如果你绝对想使用 Text
,你可以使用下面的代码片段。
@Composable
fun OneTimeClickableText(text : String, onClick : () -> Unit){
var enabled by rememberSaveable{ mutableStateOf(true)}
Text(
modifier = Modifier
.clickable(enabled = enabled) {
enabled = false
onClick()
},
text = text
)
}
那是说我这段代码是严格针对 one-time 可点击文本的。我不建议将它用于 OTP 按钮之类的东西;因为用户将无法单击它,除非他们重新启动您的应用程序。您可以拉取 enabled
变量并从外部对其进行管理(例如,将其禁用一段时间而不是永久禁用)。
您可以添加 clickable
modifier or can use the ClickableText
:
var enabled by remember { mutableStateOf(true)}
ClickableText(
text = AnnotatedString(text) ,
onClick = {
if (enabled) {
enabled = false
text = "Disabled"
}
})
Text(
text = "Resend OTP",
fontSize = 20.sp,
color = Textfieldcolor,
style = TextStyle(textDecoration = TextDecoration.Underline)
)
//这是我的代码这个文本应该可以选择一次然后被禁用。
就像@Arpit 提到的那样,最好使用 TextBotton
来达到这个目的。
但是如果你绝对想使用 Text
,你可以使用下面的代码片段。
@Composable
fun OneTimeClickableText(text : String, onClick : () -> Unit){
var enabled by rememberSaveable{ mutableStateOf(true)}
Text(
modifier = Modifier
.clickable(enabled = enabled) {
enabled = false
onClick()
},
text = text
)
}
那是说我这段代码是严格针对 one-time 可点击文本的。我不建议将它用于 OTP 按钮之类的东西;因为用户将无法单击它,除非他们重新启动您的应用程序。您可以拉取 enabled
变量并从外部对其进行管理(例如,将其禁用一段时间而不是永久禁用)。
您可以添加 clickable
modifier or can use the ClickableText
:
var enabled by remember { mutableStateOf(true)}
ClickableText(
text = AnnotatedString(text) ,
onClick = {
if (enabled) {
enabled = false
text = "Disabled"
}
})