How to delete instantly SPACE from an edittext if a user presses the space?

前端 未结 7 2037
星月不相逢
星月不相逢 2020-12-09 22:44

I have an edittext, and a textwatcher that watches if SPACE arrived or not. If its a SPACE I would like to delete that instantly. Or if its a space I want to make sure it do

7条回答
  •  Happy的楠姐
    2020-12-09 23:03

    My relatively simple solution for instant whitespace deletion without removing spannables (styles) in EditText:

    1. Remove at start:

          @Override
      public void afterTextChanged(Editable s) {
          int i;
          for (i = 0; i < s.length() && Character.isWhitespace(s.charAt(i)); i++) { ; }
          s.replace(0, i, "");
      }
      

    Basically that's it, but you can also do:

    1. Remove at start (without interrupting first input):

          @Override
      public void afterTextChanged(Editable s) {
          String text = s.toString();
          if(!text.trim().isEmpty()){
              int i;
              for (i = 0; i < s.length() && Character.isWhitespace(s.charAt(i)); i++) { ; }
              s.replace(0, i, "");
          }
      }
      

    1. Removing at start and end (allow 1 whitespace at end for convinient input):

          @Override
      public void afterTextChanged(Editable s) {
          int i;
          //remove at start
          for (i = 0; i < s.length() && Character.isWhitespace(s.charAt(i)); i++) { ; }
          s.replace(0, i, "");
          //remove at end, but allow one whitespace character
          for (i = s.length(); i > 1 && Character.isWhitespace(s.charAt(i-1)) && Character.isWhitespace(s.charAt(i-2)); i--) { ; }
          s.replace(i, s.length(), "");
      }
      

提交回复
热议问题