我有一个编辑文本,用户可以在其中输入金额,我希望对编辑文本有一些限制
- 金额不能大于100000
- 用户输入最多两位小数的金额,例如 99999.50
-已编辑-已解决
我如何实现这一目标,我是否必须创建一个过滤器
或者我可以使用myEdittext.addTextChangedListener(new TextWatcher()中的
正则表达式
来实现它...
myAmountEditText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {}
@Override
public void afterTextChanged(Editable s) {
if(amount!=null && amount.length()>=1 ){
if(amount.contains(".")){
int indexOFdec = amount.indexOf(".");
if(indexOFdec >=0) {
if(amount.substring(indexOFdec).length() >3){
amount = amount.substring(0, amount.length()-1);
myAmountEditText.setText(amount);
myAmountEditText.setSelection(myAmountEditText.getText().length());
}
}
}
Double a = Double.parseDouble(amount.toString());
if(a>0 && a<100000.00){
//my stuff
}else{
Toast.makeText(context, "amount greater than 100000", Toast.LENGTH_SHORT).show();
}
}
});
最佳答案
您可以使用此代码:
edittext.addTextChangedListener(new TextWatcher(){
public void afterTextChanged(Editable s) {}
public void beforeTextChanged(CharSequence s, int start, int count, int after){}
public void onTextChanged(CharSequence s, int start, int before, int count){
String strEnteredVal = edittext.getText().toString();
if(!strEnteredVal.equals("")){
int num=Integer.parseInt(strEnteredVal);
if(num<100000){
edittext.setText(""+num);
}else{
edittext.setText("");
}
}
});
我认为我们可以这样努力:
String str = editText.getText().toString();
int indexOFdec = str.indexOf(".");
if(indexOFdec >=0) {
if(str.substring(indexOFdec).length() >2)
{
Toast.makeText(getApplicationContext(), "Print a message here", Toast.LENGTH_SHORT).show();
return;
}
}
关于Android:编辑货币的文本验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14040718/