Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Disabling the send button when the EditText is empty when using imeOption= actionSend

When the text is empty, we want to disable the button (which is how it's set on portrait mode) Any ideas?

Edit: I don't think it's clear but I can enable/disable my own button.. But when using the landscape mode, when the keyboard pops up, the screen is covered by an android specific text area with it's own button (hence the imeOption) So I don't have a problem enabling/disabling the button I have.. It's this Android button that I want to disable when the text area is empty..

like image 826
Tolga E Avatar asked Dec 16 '22 07:12

Tolga E


1 Answers

Add a TextChangedListener which will get called whenever the text inside the EditText gets changed.

message.addTextChangedListener(new TextWatcher() {

    public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
    public void onTextChanged(CharSequence s, int start, int before, int count) {}

    public void afterTextChanged(Editable s) {
        if (s == null || s.length() == 0) {
           send.setEnabled(false);
           message.setImeOptions(EditorInfo.IME_FLAG_NO_ENTER_ACTION);
        }
        else {
          send.setEnabled(true);
          message.setImeOptions( /* whatever you previously had */ );
        }
}

Alternatively, you can also let your class implement the TextWatcher interface which makes the code a bit cleaner.

public class MyDialogFragment implements TextWatcher { ... }
like image 68
FunkTheMonk Avatar answered May 16 '23 09:05

FunkTheMonk