Очистка многострочного EditText - PullRequest
8 голосов
/ 25 января 2011

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

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

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

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

Есть ли способ «полностью» очистить многострочное поле EditText? (или, по крайней мере, кто-нибудь знает, почему вышеперечисленное не работает?)

Ответы [ 5 ]

7 голосов
/ 26 января 2011

Решено (через минуту после хорошего сна) - новая строка добавлялась после очистки текста, потому что реализация метода 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;
         }
     });
0 голосов
/ 18 февраля 2011

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

            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("");

            }
        });
0 голосов
/ 25 января 2011

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

yourEditText.getEditableText().clear();
yourEditText.setMaxLines(1);
0 голосов
/ 25 января 2011

Может быть, мне немного повезло, но:

((EditText) view).setText(null);
0 голосов
/ 25 января 2011

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

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