diff --git a/Libraries/Components/TextInput/TextInput.js b/Libraries/Components/TextInput/TextInput.js index bb40beb12c54fe..93474585e6aa82 100644 --- a/Libraries/Components/TextInput/TextInput.js +++ b/Libraries/Components/TextInput/TextInput.js @@ -252,6 +252,7 @@ type AndroidProps = $ReadOnly<{| | 'yes' | 'yesExcludeDescendants' ), + showSoftInputOnFocus?: ?boolean, |}>; type Props = $ReadOnly<{| @@ -925,6 +926,12 @@ const TextInput = createReactClass({ 'newPassword', 'oneTimeCode', ]), + /** + * When `false`, it will prevent the soft keyboard from showing when the field is focused. + * Defaults to `true`. + * @platform android + */ + showSoftInputOnFocus: PropTypes.bool, }, getDefaultProps() { return { 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 f603bfb847193e..dc0ea57f276519 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 @@ -206,7 +206,9 @@ public boolean requestFocus(int direction, Rect previouslyFocusedRect) { } setFocusableInTouchMode(true); boolean focused = super.requestFocus(direction, previouslyFocusedRect); - showSoftKeyboard(); + if (getShowSoftInputOnFocus()) { + showSoftKeyboard(); + } return focused; } diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java index 63d80befc066ab..5358a4450e6093 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java @@ -715,6 +715,12 @@ public void setBorderStyle(ReactEditText view, @Nullable String borderStyle) { view.setBorderStyle(borderStyle); } + @ReactProp(name = "showSoftInputOnFocus", defaultBoolean = true) + public void showKeyboardOnFocus(ReactEditText view, boolean showKeyboardOnFocus) { + view.setShowSoftInputOnFocus(showKeyboardOnFocus); + } + + @ReactPropGroup(names = { ViewProps.BORDER_WIDTH, ViewProps.BORDER_LEFT_WIDTH,