Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Edittext接受android中的价格格式_Java_Android_Android Edittext_Android Xml - Fatal编程技术网

Java Edittext接受android中的价格格式

Java Edittext接受android中的价格格式,java,android,android-edittext,android-xml,Java,Android,Android Edittext,Android Xml,我有一个EditText字段,用于输入价格 我可以在其中添加多个小数,但我想让它接受单个小数输入,我如何实现它?我尝试了digit=“0123456789。”只需将这一行android:inputType=“numberDecimal”添加到xml中的EditText视图中,就可以了 此外,通过以下代码检查输入的输入是否有效 try { val number = editText.text.toString().toDouble() } catch (e: Exception) {

我有一个
EditText
字段,用于输入价格


我可以在其中添加多个小数,但我想让它接受单个小数输入,我如何实现它?我尝试了
digit=“0123456789。”

只需将这一行
android:inputType=“numberDecimal”
添加到xml中的
EditText
视图中,就可以了

此外,通过以下代码检查输入的输入是否有效

try {
    val number = editText.text.toString().toDouble()
} catch (e: Exception) {
    Log.v("INVALID", "Invalid price")
}

要做到这一点,我使用下面的'InputFilter'``

/**
*CurrencyInputFilter对象的定义。
*它只允许0到9999.99之间的值
*/
类CurrencyInputFilter(val MaxDigits BeforeDecimalPoint:Int=4,val MaxDigits AfterDecimalPoint:Int=2):InputFilter{
覆盖有趣的过滤器(源:CharSequence,开始:Int,结束:Int,
dest:span,dstart:Int,dend:Int):字符序列{
val builder=StringBuilder(目的地)
建造商更换(dstart、dend、source
.subSequence(开始、结束).toString()
如果(!builder.toString().matches((([1-9]{1})([0-9]{0,+(MaxDigitBeforeDecimalPoint-1)+“}”)?(\\\.[0-9]{0,+MaxDigitAfterDecimalPoint+“}”).toreex())匹配,则返回{
if(source.isEmpty())dest.subSequence(dstart,dend)else“”
}否则无效
}
}
您可以这样使用它:

//添加输入筛选器以将价格限制在0到9999.99之间
priceEdit.filters=arrayOf(CurrencyInputFilter())
注意:您可以更改构造函数参数中的位数。

您有没有显示到目前为止尝试过的内容?