2

我有一个编辑文本,用户可以在其中输入金额,我希望对编辑文本有一些限制

  1. 金额不能大于100000
  2. 用户输入的金额最多保留两位小数,例如 99999.50

-已编辑-已解决

我如何实现这一点,我是否必须创建一个filter或者我可以使用Regular ExpressioninmyEdittext.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();
                }
            }
        });
4

2 回答 2

1

您可以使用以下代码:

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;
       }
    }
于 2012-12-26T12:44:29.457 回答
1

您可以在您的 xml 代码中执行此操作。在您指定 E* ditText * 的 xml 中,将这两个标签放在其中

        android:inputType="numberDecimal"
    android:maxLength="7"

现在使用此代码通知用户他们可以在小数点后放置超过 2 位。

        txt1 = (EditText)findViewById(R.id.editText1);
    submit = (Button)findViewById(R.id.button2);

    submit.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
               String str = txt1.getText().toString();

                int indexOFdec =  str.indexOf(".");

                if(indexOFdec >=0) {
                   if(str.substring(indexOFdec).length() >3)
                   {
                       Toast.makeText(getApplicationContext(), "put Only 2 digit after decimal", Toast.LENGTH_SHORT).show();
                       return;
                   }else{
                         Toast.makeText(getApplicationContext(), "Correct Number", Toast.LENGTH_SHORT).show();
                    }
                }

        }
    });
}

它会起作用的。

于 2012-12-26T13:09:33.423 回答