it-swarm.cn

当我按数字时如何使用EditText onTextChanged事件?

我有一个_EditText和_"text = 0.00"_。当我按数字3时,它应类似于_0.03_,第二次按数字5时,文本应为_0.35_。还有_35.0_,_35.09_这样。 EditText最初的值为_0.00_。

这些都是用相同的EditText完成的。

我该如何实现?我尝试将addTextChangedListener()TextWatcher()结合使用。

43
Ria

您选择了正确的方法。您必须使用TextWatcher扩展该类,并覆盖afterTextChanged()beforeTextChanged()onTextChanged()

您必须在afterTextChanged()方法中编写所需的逻辑才能实现所需的功能。

36
Roll no1

您也可以尝试以下操作:

EditText searchTo = (EditText)findViewById(R.id.medittext);
searchTo.addTextChangedListener(new TextWatcher() {
    @Override
    public void afterTextChanged(Editable s) {
        // TODO Auto-generated method stub
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        // TODO Auto-generated method stub
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        doSomething();
    } 
});
91
Khawar Raza

在这里,我写了一些类似于你需要的东西:

    inputBoxNumberEt.setText(".     ");
    inputBoxNumberEt.setSelection(inputBoxNumberEt.getText().length());
    inputBoxNumberEt.addTextChangedListener(new TextWatcher() {

        boolean ignoreChange = false;

        @Override
        public void afterTextChanged(Editable s) {
        }

        @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 (!ignoreChange) {
                String string = s.toString();
                string = string.replace(".", "");
                string = string.replace(" ", "");
                if (string.length() == 0)
                    string = ".     ";
                else if (string.length() == 1)
                    string = ".  " + string;
                else if (string.length() == 2)
                    string = "." + string;
                else if (string.length() > 2)
                    string = string.substring(0, string.length() - 2) + "." + string.substring(string.length() - 2, string.length());
                ignoreChange = true;
                inputBoxNumberEt.setText(string);
                inputBoxNumberEt.setSelection(inputBoxNumberEt.getText().length());
                ignoreChange = false;
            }
        }
    });
8
M. Usman Khan

把逻辑放在

afterTextChanged(Editable s) {
    string str = s.toString()
    // use the string str
}

TextWatcher上的文档

1
Dan Alboteanu