如何解决如何使用 Jetpack Compose 在文本字段中添加国家/地区代码前缀
我希望我的文本字段以国家代码 (+91) 为前缀,用户无法更改该代码。 我如何实现这一目标?
解决方法
您可以使用 visualTransformation
属性:
类似于:
TextField(
value = text,onValueChange = { text = it},visualTransformation = PrefixTransformation("(+91)")
)
与:
class PrefixTransformation(val prefix: String) : VisualTransformation {
override fun filter(text: AnnotatedString): TransformedText {
return PrefixFilter(text,prefix)
}
}
fun PrefixFilter(number: AnnotatedString,prefix: String): TransformedText {
var out = prefix + number.text
val prefixOffset = prefix.length
val numberOffsetTranslator = object : OffsetMapping {
override fun originalToTransformed(offset: Int): Int {
return offset + prefixOffset
}
override fun transformedToOriginal(offset: Int): Int {
if (offset <= prefixOffset-1) return prefixOffset
return offset - prefixOffset
}
}
return TransformedText(AnnotatedString(out),numberOffsetTranslator)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。