gpt4 book ai didi

android - 如何使用 kotlin 在 EditText 中设置输入类型和格式?

转载 作者:太空狗 更新时间:2023-10-29 16:26:00 30 4
gpt4 key购买 nike

我想强制用户输入一个数字,我正在使用它(并且工作正常):

android:inputType="number"

我想强制用户只输入两个数字(Int 或 Double 无关紧要)并且这些数字必须介于 0 和 20(或 0.0 和 20.0)之间:例如:0 或 0.01 或 1.5(1.0 等)...20 或 20.0

最佳答案

这是我喜欢这样做的方式:

添加这个用于编辑文本

 android:inputType="numberDecimal"  

(或)

android:digits="0123456789."

Kotlin ::

class InputFilterMinMax(min:Float, max:Float): InputFilter {
private var min:Float = 0.0F
private var max:Float = 0.0F

init{
this.min = min
this.max = max
}

override fun filter(source:CharSequence, start:Int, end:Int, dest: Spanned, dstart:Int, dend:Int): CharSequence? {
try
{
val input = (dest.subSequence(0, dstart).toString() + source + dest.subSequence(dend, dest.length)).toFloat()
if (isInRange(min, max, input))
return null
}
catch (nfe:NumberFormatException) {}
return ""
}

private fun isInRange(a:Float, b:Float, c:Float):Boolean {
return if (b > a) c in a..b else c in b..a
}
}

然后在您的 EditText 上设置过滤器:

myEditText.setFilters(arrayOf<InputFilter>(InputFilterMinMax(0.0F, 20.0F)))

Java:

public class InputFilterMinMax implements InputFilter {
private float min;
private float max;

public InputFilterMinMax(float min, float max) {
this.min = min;
this.max = max;
}

@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
//noinspection EmptyCatchBlock
try {
float input = Float.parseFloat(dest.subSequence(0, dstart).toString() + source + dest.subSequence(dend, dest.length()));
if (isInRange(min, max, input))
return null;
} catch (NumberFormatException nfe) { }
return "";
}

private boolean isInRange(float a, float b, float c) {
return b > a ? c >= a && c <= b : c >= b && c <= a;
}
}

然后在您的 EditText 上设置过滤器:

myEditText.setFilters(new InputFilter[]{new InputFilterMinMax(0.0, 20.0)});

关于android - 如何使用 kotlin 在 EditText 中设置输入类型和格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53758285/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com