[英]EditText to Input Money Amount
我正在开发销售点应用程序。
所以我想让用户输入购买金额
假设用户输入100000
但我希望它自动显示100,000
。 1000000
变成1,000,000
第二个问题是,我不希望用户能够输入.
他们自己。
第三个问题,既然是钱,我们不能让用户一开始就输入0。
有任何想法吗?
到目前为止,我只能提出inputType=numberDecimal
这并不是很有帮助。
非常感谢
PS:我不需要任何小数位
如果你想在货币中使用addTextChangedListener
添加到你想要的编辑文本然后监视更改并重新格式化它,这里是示例代码
private String current = "";
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(!s.toString().equals(current)){
[your_edittext].removeTextChangedListener(this);
String cleanString = s.toString().replaceAll("[$,.]", "");
double parsed = Double.parseDouble(cleanString);
String formatted = NumberFormat.getCurrencyInstance().format((parsed/100));
current = formatted;
[your_edittext].setText(formatted);
[your_edittext].setSelection(formatted.length());
[your_edittext].addTextChangedListener(this);
}
}
您可以实现一个或多个InputFilter以在您的EditText
上强制执行这些约束。 可以使用setFilters
方法在EditText
上附加多个过滤器。
您也可以使用TextWatcher来实现相同的目的。 但是,使用InputFilter
更有意义,因为它允许您在每次更改输入后更改文本而无需调用setText
方法。
对于您的第一个问题,请按照此链接千位分隔符
对于您的第二个问题,将此添加到您的 editext
android:digits="0123456789"
android:inputType="numberDecimal"
对于你的第三个问题,你必须像这样使用 TextWatcher
editText1.addTextChangedListener(new TextWatcher(){
public void onTextChanged(CharSequence s, int start, int before, int count)
{
if (editText1.getText().toString().matches("^0") )
{
// Not allowed
Toast.makeText(context, "not allowed", Toast.LENGTH_LONG).show();
editText1.setText("");
}
}
@Override
public void afterTextChanged(Editable arg0) { }
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.