EditText限制 只能输入0.00 -100保留两位小数

public class MydoubeChangeListener implements TextWatcher {


    private EditText editText;

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


    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        String content = s.toString().trim();
        if (!content.endsWith("%")) {
            content = content + "%";

            if (content.equals(".%")) {
                content = "0.%";
                editText.setText(content);
            } else {
                editText.setText(content);
            }
            if (content.equals("%")) {
                editText.setSelection(0);
            } else {
                if ("0.%".equals(content)) {
                    editText.setSelection(2);
                } else {
                    if (content.endsWith("%")) {
                        editText.setSelection(content.indexOf("%"));
                    }
                }

            }
        } else {//以%结尾
            if (content.length() == 1) {
                editText.setSelection(0);
            } else if (content.length() == 2) {
                if (content.startsWith(".")) {
                    content = "0.%";
                    editText.setText("0.%");
                    editText.setSelection(2);
                } else {
                    editText.setSelection(1);
                }
            } else if (content.length() == 3) {
                if (content.startsWith("0") && !content.contains(".")) {
                    String head = content.substring(0, 2);
                    String foot = content.substring(2, content.length()-1);
                    editText.setText("0."+content.substring(1, content.length()));
                    editText.setSelection(3);
                }

            } else if (content.length() == 4) {
                if (!content.contains(".") && !content.startsWith("100")) {
                    String head = content.substring(0, 2);
                    String foot = content.substring(2, content.length()-1);
                    editText.setText(head+"."+foot);
                    editText.setSelection(4);
                }
            } else if (content.length() == 5) {
                if (content.startsWith("100")) {
                    editText.setText("100%");
                    editText.setSelection(3);
                }
            } else if (content.length() == 6) {
                if (content.contains(".") && content.indexOf(".")==1) {
                    editText.setText(content.substring(0,4));
                    editText.setSelection(4);
                }
            }
        }




    }

    @Override
    public void afterTextChanged(Editable editable) {

    }
}

写了一个EditText监听,来改变用户的输入,限制用户只能输入0.00-100,中途只能输入两位小数,并且加上"%"项目中改来改去,花费了时间写了又不用了,实在可惜.发出来分享下



你可能感兴趣的:(Android开发)