Java 编辑文本以输入货币金额
我正在开发一个销售点应用程序 所以我想让用户输入购买金额Java 编辑文本以输入货币金额,java,android,android-edittext,textview,Java,Android,Android Edittext,Textview,我正在开发一个销售点应用程序 所以我想让用户输入购买金额 假设用户输入100000,但我希望它自动显示100000。而1000000变成1000000 第二个问题是,我不希望用户能够自己输入 第三个问题是,由于这是钱,我们不能让用户在开始时输入0 有什么想法吗 到目前为止,我只能提出inputType=numberDecimal,这并没有真正的帮助 多谢各位 p.S.:我不需要任何小数位您可以实现一个或多个小数位,以在您的编辑文本上实施这些约束。可以使用setFilters方法在EditText
100000
,但我希望它自动显示100000
。而1000000
变成1000000
inputType=numberDecimal
,这并没有真正的帮助
多谢各位
p.S.:我不需要任何小数位您可以实现一个或多个小数位,以在您的
编辑文本
上实施这些约束。可以使用setFilters
方法在EditText
上附加多个过滤器
你也可以用s来实现同样的目标。但是,使用
InputFilter
更有意义,因为它允许您在每次更改输入后不必调用setText
方法来更改文本。如果您想使用货币,请将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);
}
}
对于您的第一个问题,请点击此链接 关于你的第二个问题 将此添加到您的编辑文本中
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) {}
});
如果用户想要输入10000,则将其设置为100?对于第二个问题,您可以使用edittext XML中的digits关键字为edittext指定数字。对于第三个问题,您可以看到此链接,对于第一个问题,您可以看到此链接,但不幸的是,用户能够在金额前缀中输入0000s,一旦他在编辑文本中有了内容。