Как ограничить заданный c символ в редактируемом тексте? - PullRequest
1 голос
/ 04 апреля 2020

Мой вопрос заключается в том, как ограничить указанный c символ в тексте редактирования?

например, я хочу ограничить # символ, используя макс. 3 раза в редактировании текста.

Как я могу это сделать? Любой совет или пример кода, пожалуйста.

спасибо.

Ответы [ 3 ]

0 голосов
/ 05 апреля 2020

Попробуйте это

int currHash=0;
    edtText.addTextChangedListener(new TextWatcher() {

        CharSequence previous;
        public void afterTextChanged(Editable source) {
        if(source.toString().contains("#") && currHash=2){
              source.clear();
              source.append(previous.toString());
        }
        else 
             if(source.toString().contains("#"))
                currHash++;
      }

      public void beforeTextChanged(CharSequence source, int start, int count, int after) {    
            previous = source;
      }

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

0 голосов
/ 05 апреля 2020

Я нашел такое решение.

etDesc.addTextChangedListener(new TextWatcher() {
             @Override
             public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                 hastagCount = s.toString().length() - s.toString().replace("#", "").length();
                 if(hastagCount<=3){
                     previousDesc = s.toString();
                 }
             }

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

             }

             @Override
             public void afterTextChanged(Editable s) {
                 hastagCount = s.toString().length() - s.toString().replace("#", "").length();
                 if(hastagCount>3){
                     s.clear();
                     s.append(previousDesc);
                     int pos = etDesc.getText().length();
                     etDesc.setSelection(pos);
                     etDesc.setFocusable(true);
                 }

             }
         });
0 голосов
/ 04 апреля 2020

используйте это

yourEditText.addTextChangedListener(new TextWatcher() {
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

            if(count>3){
        yourEditText.setEnabled(false);

                  }
        }

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

        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });
...