Unk*_*own 3 android android-studio android-jetpack android-jetpack-compose
我想在用户单击“重新发送”时显示 1 分钟的计时器
Text(
text = "Re-send",
modifier = Modifier.clickable { },
color = Color.Blue
)
Run Code Online (Sandbox Code Playgroud)
要创建具有 2 种颜色的文本,您需要 annotatedString,为了重新发送可点击,您需要重新发送的索引和 ClickableText
要创建计时器,您可以使用 LaunchedEffect,如下面的代码片段所示
@Composable
private fun ResendTextSample() {
val str = "Did you not receive the email? "
val length = str.length
var isTimerActive by remember {
mutableStateOf(false)
}
var time by remember { mutableStateOf("") }
LaunchedEffect(key1 = isTimerActive) {
if(isTimerActive){
var second = 0
while (second < 15) {
time = if(second <10) "0:0$second" else "0:$second"
delay(1000)
second++
}
isTimerActive = false
}
}
val annotatedLinkString = buildAnnotatedString {
append(str)
withStyle(
SpanStyle(
color = Color.Blue,
)
) {
if (!isTimerActive) {
append("Re-send")
} else {
append(time)
}
}
append("\nCheck your spam filter")
}
ClickableText(
text = annotatedLinkString,
style = TextStyle(fontSize = 20.sp),
onClick = {
if (!isTimerActive && it >= length && it <= length + 7) {
isTimerActive = true
}
}
)
}
Run Code Online (Sandbox Code Playgroud)
结果。在演示中,我将最大时间设置为 15 秒,以显示已启用重新发送。
| 归档时间: |
|
| 查看次数: |
245 次 |
| 最近记录: |