微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 Jetpack Compose 在文本字段中添加国家/地区代码前缀

如何解决如何使用 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)
}

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。