Android-EditText金額入力制御桁数(小数点上位、小数点下位)

4511 ワード

原理は簡単にeditText入力を傍受し、小数点前の桁数と小数点後の桁数を判断し、超えると入力した文字を削除し、下に直接コードを貼り付ける.
/**
 * @Description:EditText        :      ,    2 
 * @author: jiawen.gu
 * @CreateDate: 2017/11/6
 */

public class EditTextJudgeNumberWatcher implements TextWatcher {
    private EditText editText;

    public EditTextJudgeNumberWatcher(EditText editText) {
        this.editText = editText;
    }

    @Override
    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

    }

    @Override
    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

    }

    @Override
    public void afterTextChanged(Editable editable) {
        judgeNumber(editable,editText);
    }

    /**
     *            (  :      ,    2 )
     *
     * @param edt
     */
    public static void judgeNumber(Editable edt,EditText editText) {

        String temp = edt.toString();
        int posDot = temp.indexOf(".");//                     
        int index = editText.getSelectionStart();//      
        //  if (posDot == 0) {//               
            //  edt.delete(0, temp.length());//      
            //  return;
        //  }
        if (posDot < 0) {//      
            if (temp.length() <= 5) {
                return;//         
            } else {
                edt.delete(index-1, index);//        
                return;
            }
        }
        if (posDot > 5) {//      5          
            edt.delete(index-1, index);//        
            return;
        }
        if (temp.length() - posDot - 1 > 2)//       
        {
            edt.delete(index-1, index);//        
            return;
        }
    }
}

使用方法は次のとおりです.
EditText editText= (EditText) findViewById(R.id.editText);
editText.addTextChangedListener(new EditTextJudgeNumberWatcher(editText));

コードは簡単で、注釈もはっきりしていて、あなたに役に立つことを望んでいます!