DecimalDigitsInputFilter kotlin语言
时间: 2023-10-05 20:07:38 浏览: 213
kotlin语言文档
以下是Kotlin语言下的`DecimalDigitsInputFilter`实现:
```kotlin
import android.text.InputFilter
import android.text.Spanned
import java.util.regex.Matcher
import java.util.regex.Pattern
class DecimalDigitsInputFilter(digitsBeforeZero: Int, digitsAfterZero: Int) : InputFilter {
private val pattern: Pattern =
Pattern.compile("[0-9]{0,$digitsBeforeZero}+((\\.[0-9]{0,$digitsAfterZero})?)||(\\.)?")
override fun filter(
source: CharSequence?,
start: Int,
end: Int,
dest: Spanned?,
dstart: Int,
dend: Int
): CharSequence? {
val matcher: Matcher = pattern.matcher(dest.toString() + source.toString())
return if (!matcher.matches()) "" else null
}
}
```
该类接受两个参数:`digitsBeforeZero`和`digitsAfterZero`,分别表示小数点前的数字位数和小数点后的数字位数。在`filter()`方法中,使用正则表达式匹配输入的内容是否符合要求,如果不符合则返回空字符串,否则返回`null`表示不做任何限制。然后在EditText中调用`setFilters()`方法设置该过滤器即可。
阅读全文