3

我如何在 edtitext 中的每次更改之后添加诸如此破折号“-”之类的字符,例如,如果用户输入 A,那么 edittext 中的文本将为 A-,那么用户将完成并输入 Char B,那么 edittext 将为 AB 如何执行这个?谢谢

name = (EditText)findViewById(R.id.editText1);
        name.addTextChangedListener(new TextWatcher(){
             public void afterTextChanged(Editable s) {

                 name.setText("-");
                }
     public void beforeTextChanged(CharSequence s, int start, int count, int after){}
       public void onTextChanged(CharSequence s, int start, int before, int count){


               }
4

4 回答 4

4

您有无限循环,如 Android Doc 中所述

但请注意不要让自己陷入无限循环,因为您所做的任何更改都会导致再次递归调用此方法。

所以你所要做的就是强加一个条件来避免无限循环。例如,

name.addTextChangedListener(new TextWatcher() {
        public void afterTextChanged(Editable s) {
            if(s.charAt(s.length()-1)!='-'){
                s.append("-");
            }

        }

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

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

    });
于 2011-09-18T09:03:14.617 回答
1

添加TextWatcher, 使用addTextChangedListener().

于 2011-09-18T07:06:53.003 回答
1

-将字符附加到beforeTextChagned

  name = (EditText)findViewById(R.id.editText1);
  name.addTextChangedListener(new TextWatcher() {
         public void beforeTextChanged(CharSequence s, int start, int count, int after) {
             name.setText(s+"-");
         }
         public void afterTextChanged(Editable s){}
         public void onTextChanged(CharSequence s, int start, int before, int count){}
  }
于 2011-09-18T07:29:38.243 回答
0
    name = (EditText)findViewById(R.id.editText1);
            name.addTextChangedListener(new TextWatcher(){
                 public void afterTextChanged(Editable s) {
               try{    
                     name.setText(s.toString()+"-");
               }catch(exception e)
              {
               e.printStackTrace();
              } 
                    }
         public void beforeTextChanged(CharSequence s, int start, int count, int after){}
           public void onTextChanged(CharSequence s, int start, int before, int count){

               }
于 2011-09-18T07:18:40.140 回答