首页 > 解决方案 > 在编辑文本中按零任意次,但用户应该只能看到 1 位数字,例如计算器

问题描述

我有一个编辑文本来填写金额。所以,我添加了文本观察器,但我不希望用户“0000000 ...”如果用户将连续按“0000 ...”而不是像计算器一样只显示一次“0”

我怎样才能做到这一点?

private void setAmount() {
    etAmount.addTextChangedListener(new TextWatcher() {

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

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if (s.length() == 1) {
                if (s.toString().equals("0")) {
                    etAmount.setText("0");
                }
            }

            //Not working
        }

        @Override
        public void afterTextChanged(Editable s) {}
    });
}

我想,我的逻辑也是错误的,因为当我输入单个输入并检查s.lengthet.setText("0"),它会进入无限循环。

标签: androidandroid-edittextcalculator

解决方案


尝试这个:

    etAmount.addTextChangedListener(new TextWatcher() {

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

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
        }

        @Override
        public void afterTextChanged(Editable s) {
            String text = s.toString();
            if (text.length() == 2 && text.charAt(0) == '0') {
                etAmount.setText(text.substring(1));
                etAmount.setSelection(1);
            }
        }
    });

推荐阅读