Android Money Input with fixed decimal

后端 未结 7 1234
鱼传尺愫
鱼传尺愫 2020-12-02 00:07

How do you create an edittext entry that formats input in money format only? When the user enters 5, I want the input to look like \"$0.05\" and when they then enter 3, th

7条回答
  •  攒了一身酷
    2020-12-02 00:35

    I did this but without decimal and with dot for miles, check the code and add the functionality to support decimals.

        MyEditText.addTextChangedListener(new TextWatcher() 
            {
                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count){
                    if(s.toString().length() > 0){
                        MyEditText.removeTextChangedListener(this);                 
                        String numbers = removeCharacters(s.toString());
                        int money = 0;
                        try{
                            money = Integer.parseInt(numbers);
                        }
                        catch(Exception ex){
                            money = 0;
                        }
    
                        MyEditText.setText(getMoney(money));
                        //Set cursor on correct position
                        int selection = start;
                        if(count > 0){
                            selection++;
                            if(MyEditText.getText().toString().length() == 2 || MyEditText.getText().toString().length() == 6 || MyEditText.getText().toString().length() == 10){
                                selection++;
                            }                           
                        }
                        else{
                            if(MyEditText.getText().toString().length() == 4 || MyEditText.getText().toString().length() == 8){
                                selection--;
                            }
                        }
    
                        if(selection > MyEditText.getText().toString().length()){
                            selection = MyEditText.getText().toString().length();
                        }                       
    
                        MyEditText.setSelection(selection);
                        MyEditText.addTextChangedListener(this);
                    }
                    if(s.toString().length() == 1 && count < 1 && start == 1){
                        MyEditText.removeTextChangedListener(this);
                        MyEditText.setText("");
                        MyEditText.addTextChangedListener(this);
                    }
    
                }           
    
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count,
                        int after){
    
                }           
    
                @Override
                public void afterTextChanged(Editable s) 
                {
    
                }
    
            });
    
    
    
        public String removeCharacters(String money){       
    
        int i=0;
        while (i

提交回复
热议问题