2015-12-05 3 views
0

У меня есть текст редактирования, в котором пользователи могут вводить максимальный символ 100, после того, как оно равно 100, текст редактирования установлен на comments.setKeyListener(null);, но проблема в том, что я хочу разрешить пользователю удалять некоторые символы, чтобы снова редактировать егоКак разрешить пользователю удалять текст, а не добавлять символы?

ответ

0

Вы должны создать новую TextWatcher

TextWatcher commentsWatcher = 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) { 
     int c = 100 - comments.getText().length(); 

     if (c < 0) { 
      // if the length is 100 delete the last char 
      comments.setText(comments.getText().toString().substring(0, comments.getText().length() - 1)); 
      // if you delete the last char the cursor will be moved on 
      // the start of your EdidText, so you must move it on the end 
      comments.setSelection(comments.getText().length()); 
     }; 
    } 

    @Override 
    public void afterTextChanged(Editable s) { 

    } 
}; 

, а затем вызвать его на вас EditText как этот

comments.addTextChangedListener(commentsWatcher); 
+0

спасибо, да у меня уже есть этот код, но не хватает в этой части только 'комментарии. setText (comments.getText(). toString(). substring (0, comments.getText(). length() - 1)); ' – SCS

1

Это не рекомендуется устанавливать максимальную длину для ввода пользователем. Вы должны использовать атрибут xили добавить LengthFilter с setFilters().

Смежные вопросы