Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to implement Multiline EditText with ActionDone button (without Enter button)

I have EditText which is used for entering contents on messages (emails, sms). I want message to be immediately posted on ActionDone button click. I use following code for this:

message.setOnEditorActionListener((textView, i, keyEvent) -> {             switch (i) {                 case EditorInfo.IME_ACTION_DONE:                     if (messageCanBePosted()) {                         SoftKeyboard.hide(message);                         postMessage();                         return true;                     } else {                         return false;                     }                 default:                     return false;             }         });  

But also I want this message field to be multiline, like in any other messenger apps. I can achieve it with this line:

android:inputType="textMultiLine" 

The problem is that after adding this line ActionDone button starts acting like Enter button. So my callback for catching EditorInfo.IME_ACTION_DONE is never called. So each time user press that button cursor moves to new line instead of posting message.

How can I keep both multiline behavior of EditText (ability to show text on multiple lines) and ActionDone button?

like image 253
Ruslan Avatar asked Mar 31 '16 16:03

Ruslan


1 Answers

Use

editText.setImeOptions(EditorInfo.IME_ACTION_DONE); editText.setRawInputType(InputType.TYPE_CLASS_TEXT); 

and in XML:

android:inputType="textMultiLine" 

Source : Multi-line EditText with Done action button

like image 144
Rathi J Avatar answered Sep 23 '22 06:09

Rathi J