2016-01-19 2 views
0

Мое требование состоит в том, что пользователи не могут добавить текст в EditText после 25 символов, но могут удалить символ из EditText.Как удалить текст из EditText, но EditText editable false

Вот мой код:

groupName = (EditText) findViewById(R.id.groupName); 
groupName.addTextChangedListener(new TextWatcher() { 
    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

    } 
    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     Log.d("TEXTHellow",start+" "+before+" "+count); 
     if (groupName.length() > 24) { 
      groupName.setFocusable(false); 
      groupName.setClickable(false); 
      groupName.setFocusableInTouchMode(false); 
      groupName.setLongClickable(false); 
      groupName.setInputType(InputType.TYPE_NULL); 
     } 
     int remChar=25-count; 
     numChar.setText(remChar+""); 
    } 
    @Override 
    public void afterTextChanged(Editable s) { 

    } 
}); 
+1

наклоняю вы используете Android: MAXLENGTH = "25" !!! – Nisarg

+0

android: maxLength = "25" в формате XML –

ответ

3

Если вы хотите ограничить количество полукокса в EditText до 25:

InputFilter[] FilterArray = new InputFilter[1]; 
FilterArray[0] = new InputFilter.LengthFilter(25); 
groupName.setFilters(FilterArray); 

Надеется, что это помогает.

0

использование подстроку() метода

String numChar= EditText.getText().toString(); 
if (numChar.length() > 24) { 
numChar= str.substring (0, numChar.length() - 1);// here am delete one last letter 
EditText.setText (numChar); 
} 
0

почему бы не указать максимальный характер, принятый edittext будет только 25,

Это позволило бы уменьшить шум ненужного кодирования, которая не требуется.

Если я понимаю ваш вопрос правильно, это было бы намного проще. android:maxLength="25"

  <EditText 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:lineSpacingMultiplier="1" 
       android:maxLength="25" 
       android:maxLines="1" /> 

позволяет сказать, что ваш текст в изменениях EditText, другими словами, вы не уверены в том, что бы максимальная длина EditText, вы можете использовать следующий код. Просьба проверить это setFilters

editText = (EditText)findViewById(R.id.TestLayoutActivity_editText); 
    InputFilter[] inputFilter = {new InputFilter.LengthFilter(editText.getText().toString().length())}; 
    editText.setFilters(inputFilter); 
0

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

groupName.addTextChangedListener(new TextWatcher() { 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, 
        int count) { 
       // 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 afterTextChanged(Editable s) { 
       // TODO Auto-generated method stub 
       if (groupName.getText().toString().length() >= 24) { 
        groupName.setError("Max 24 characters"); 
        valid_num = null; 
       }else { 
        valid_num = groupName.getText().toString(); 
       } 
      } 
     }); 
0

Добавить атрибут MAXLENGTH в XML:

android:maxLength="25" 

и в OnTextChangeListener:

yourEditText.setText("Characters remaining : "+Integer.toString(25-(s.length()))); 
Смежные вопросы