diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java b/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java index bf318a0dc..a8e43b2bb 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java @@ -35,6 +35,7 @@ import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; import android.view.inputmethod.EditorInfo; +import android.view.inputmethod.InputConnection; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; @@ -182,6 +183,16 @@ public class ReactEditText extends EditText { } } + @Override + public InputConnection onCreateInputConnection(EditorInfo outAttrs) { + InputConnection connection = super.onCreateInputConnection(outAttrs); + if (isMultiline() && getBlurOnSubmit()) { + // Remove IME_FLAG_NO_ENTER_ACTION to keep the original IME_OPTION + outAttrs.imeOptions &= ~EditorInfo.IME_FLAG_NO_ENTER_ACTION; + } + return connection; + } + @Override public void clearFocus() { setFocusableInTouchMode(false); diff --git a/ReactAndroid/src/test/java/com/facebook/react/views/textinput/ReactTextInputPropertyTest.java b/ReactAndroid/src/test/java/com/facebook/react/views/textinput/ReactTextInputPropertyTest.java index 4f89f035e..2dd209a71 100644 --- a/ReactAndroid/src/test/java/com/facebook/react/views/textinput/ReactTextInputPropertyTest.java +++ b/ReactAndroid/src/test/java/com/facebook/react/views/textinput/ReactTextInputPropertyTest.java @@ -15,6 +15,7 @@ import android.text.InputType; import android.text.InputFilter; import android.util.DisplayMetrics; import android.view.Gravity; +import android.view.inputmethod.EditorInfo; import android.widget.EditText; import com.facebook.react.bridge.CatalystInstance; @@ -201,6 +202,20 @@ public class ReactTextInputPropertyTest { assertThat(view.getInputType() & InputType.TYPE_TEXT_FLAG_MULTI_LINE).isZero(); } + @Test + public void testBlurMultiline() { + ReactEditText view = mManager.createViewInstance(mThemedContext); + + mManager.updateProperties(view, buildStyles("multiline", true)); + mManager.updateProperties(view, buildStyles("blurOnSubmit", true)); + + EditorInfo editorInfo = new EditorInfo(); + editorInfo.imeOptions = EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_ENTER_ACTION; + view.onCreateInputConnection(editorInfo); + + assertThat(editorInfo.imeOptions).isEqualTo(EditorInfo.IME_ACTION_DONE); + } + @Test public void testNumLines() { ReactEditText view = mManager.createViewInstance(mThemedContext);