如何限制编辑文本中的特定字符?

时间:2020-04-04 16:15:54

标签: android textview android-edittext

我的问题是,如何限制编辑文本中的特定字符?

例如,我想使用最大字符数限制#个字符。编辑文字3次。

我该怎么做?请提供任何建议或代码示例。

谢谢。

3 个答案:

答案 0 :(得分:0)

使用此

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) {

        }
    });

答案 1 :(得分:0)

尝试一下

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) {}
     });

答案 2 :(得分:0)

我找到了这样的解决方案。

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);
                 }

             }
         });