InputFilter filter = new InputFilter() { public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { String input = dest.toString() + source.toString(); if (input.isEmpty()) { return null; // 允许空输入 } try { // 将输入转换为浮点数 double value = Double.parseDouble(input); // 检查输入是否在范围内且只有一位小数 if (value >= 0.1 && value <= 999 && input.matches("^\\d+(\\.\\d{0,1})?$")) { return null; // 输入有效,不进行过滤 } } catch (NumberFormatException e) { e.printStackTrace(); } // 输入无效,返回空字符串表示不添加到EditText上 return ""; Kotlin EditText 输入限制0.1 - 999 只能输入一位小数
时间: 2024-02-14 18:25:14 浏览: 103
在Kotlin中,您可以使用以下代码将输入限制为0.1到999之间,并且只能输入一位小数:
```kotlin
val editText: EditText = findViewById(R.id.editText)
val filter = InputFilter { source, start, end, dest, dstart, dend ->
val input = dest.toString() + source.toString()
if (input.isEmpty()) {
return@InputFilter null // 允许空输入
}
try {
// 将输入转换为浮点数
val value = input.toDouble()
// 检查输入是否在范围内且只有一位小数
if (value >= 0.1 && value <= 999 && input.matches(Regex("^\\d+(\\.\\d{0,1})?$"))) {
return@InputFilter null // 输入有效,不进行过滤
}
} catch (e: NumberFormatException) {
e.printStackTrace()
}
// 输入无效,返回空字符串表示不添加到EditText上
""
}
editText.filters = arrayOf(filter)
```
这段代码与之前Java代码的逻辑是相同的,只是使用了Kotlin语法。我们创建了一个InputFilter,并将其应用于EditText。该InputFilter会对输入的字符序列进行过滤,只允许在0.1到999之间的数字输入,并且只能有一位小数。如果输入超出了范围或不符合要求,那么将返回空字符串以阻止其添加到EditText上。
请注意,在使用该代码之前,您需要将EditText的id替换为您实际使用的id。
希望这对您有所帮助!如果还有其他问题,请随时提问。
阅读全文