Prevent enter key on EditText but still show the text as multi-line
I would subclass the widget and override the key event handling in order to block the Enter
key:
class MyTextView extends EditText{ ... @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode==KeyEvent.KEYCODE_ENTER) { // Just ignore the [Enter] key return true; } // Handle all other keys in the default way return super.onKeyDown(keyCode, event); }}
This is a method, where you don't have to override the EditText class. You just catch and replace the newlines with empty strings.
edittext.addTextChangedListener(new TextWatcher() {public void onTextChanged(CharSequence s, int start, int before, int count) {}public void beforeTextChanged(CharSequence s, int start, int count, int after) {}public void afterTextChanged(Editable s) { /* * The loop is in reverse for a purpose, * each replace or delete call on the Editable will cause * the afterTextChanged method to be called again. * Hence the return statement after the first removal. * http://developer.android.com/reference/android/text/TextWatcher.html#afterTextChanged(android.text.Editable) */ for(int i = s.length()-1; i >= 0; i--){ if(s.charAt(i) == '\n'){ s.delete(i, i + 1); return; } }}});
Credit to Rolf for improvement on an earlier answer.
Property in XML
android:lines="5"android:inputType="textPersonName"