Очистка многострочных полей 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);
я использовал это, когда у меня была кнопка 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("");
}
});