Очистка многострочных полей EditText

Я пытаюсь очистить многострочное поле редактирования внутри OnEditorActionListener.метод onEditorAction.

но, используя любой из очевидных способов, т. е.

((EditText) view).getEditableText().clear();
((EditText) view).getEditableText().clearSpans(); 
((EditText) view).setText("");

очищает только видимые символы-оставляя новые строки в поле (которые затем должны быть удалены вручную).

есть ли способ "полностью" очистить многострочное поле редактирования ? (или, по крайней мере - кто-нибудь знает, почему не работают ?)

5 ответов


решено (через минуту после хорошего ночного сна) - новая строка была добавлена после очистки текста, потому что реализация метода onEditorAction возвращалась false (по другим причинам).

возвращение true указывает, что "enter" был обработан/потреблен, и clear () ведет себя так, как ожидалось:

edittext.setOnEditorActionListener(new OnEditorActionListener() { 
    @Override
    public boolean onEditorAction(TextView view,int actionId,KeyEvent event) {
           post(view.getText().toString());

           ((EditText) view).getEditableText().clear();

           return true;
         }
     });

У меня нет IDE для тестирования, но вы можете попробовать:

  • ((EditText) view).clearComposingText() Это метод наследования от TextView
  • не так элегантно, но, возможно, функционально:setSingleLine = правда а то false снова. Может быть, полезно, пока кто-то не сможет предложить что-то получше...

есть способ с setMaxLines:

yourEditText.getEditableText().clear();
yourEditText.setMaxLines(1);

может быть, я чувствую себя немного повезло, но:

((EditText) view).setText(null);

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

            Button clearButton = (Button)findViewById(R.id.clear);

    clearButton.setOnClickListener(new Button.OnClickListener() {

        public void onClick(View v) {

            number = (EditText) findViewById(R.id.text_reading);

            number.setText("");

            }
        });