Android 如何在Compose中创建Textfield
我想创建这样的文本字段:Android 如何在Compose中创建Textfield,android,android-jetpack-compose,Android,Android Jetpack Compose,我想创建这样的文本字段: 如何操作,文本字段背景?您可以使用文本字段并使用可视化转换属性格式化数字: TextField(value = text, onValueChange = { text = it }, visualTransformation = NumberTransformation() ) 其中,NumberTransformation类似于: class NumberTransformation() : VisualTransformation {
如何操作,文本字段背景?您可以使用
文本字段
并使用可视化转换
属性格式化数字:
TextField(value = text,
onValueChange = { text = it },
visualTransformation = NumberTransformation()
)
其中,NumberTransformation
类似于:
class NumberTransformation() : VisualTransformation {
override fun filter(text: AnnotatedString): TransformedText {
return numberFilter(text)
}
}
fun numberFilter(text: AnnotatedString): TransformedText {
// +XXX XXX XXX XXX
val trimmed = if (text.text.length >= 12) text.text.substring(0..11) else text.text
var out = ""
for (i in trimmed.indices) {
if (i==0) out += "+"
out += trimmed[i]
if (i % 3 == 2 && i != 11) out += " "
}
val numberOffsetTranslator = object : OffsetMapping {
override fun originalToTransformed(offset: Int): Int {
if (offset <= 0) return offset
if (offset <= 2) return offset +1
if (offset <= 5) return offset +2
if (offset <= 8) return offset +3
if (offset <= 12) return offset +4
return 16
}
override fun transformedToOriginal(offset: Int): Int {
if (offset <=0) return offset
if (offset <=3) return offset -1
if (offset <=7) return offset -2
if (offset <=11) return offset -3
if (offset <=15) return offset -4
return 11
}
}
return TransformedText(AnnotatedString(out), numberOffsetTranslator)
}
class NumbertTransformation():VisualTransformation{
覆盖趣味过滤器(文本:AnnotatedString):TransformedText{
返回编号过滤器(文本)
}
}
有趣的数字过滤器(文本:AnnotatedString):TransformedText{
//+XXX XXX XXX XXX
val trimmed=if(text.text.length>=12)text.text.substring(0..11)else text.text
var out=“”
对于(修剪索引中的i){
如果(i==0)输出+=“+”
out+=修剪后的[i]
如果(i%3==2&&i!=11)输出+=“”
}
val NumberOfSetTranslator=对象:偏移映射{
覆盖原始转换(偏移量:Int):Int{
if(offset)我指的是文本字段的背景