我希望我的文本字段以国家代码 (+91) 为前缀,用户无法更改该代码。
我如何实现这一目标?
最佳答案
您可以使用 visualTransformation
属性(property):
就像是:
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)
}
关于android - 如何使用 Jetpack Compose 在文本字段中添加国家代码前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67735208/