-
Notifications
You must be signed in to change notification settings - Fork 24.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
BREAKING: [CLI] New app template: Resize UI when keyboard is shown on Android #12154
Conversation
Cool, someone actually posted this issue on the fb group yesterday. @facebook-github-bot shipit |
@janicduplessis has imported this pull request. If you are a Facebook employee, you can view this diff on Phabricator. |
Another thing we might want to do related to this is make KeyboardAvoidingView do nothing on Android. |
… Android Summary: When building the Chat example for react-navigation, I realized the default Android behavior doesn't actually work: <img width="868" alt="screenshot 2017-02-01 15 15 25" src="https://cloud.githubusercontent.com/assets/346214/22512559/518e3bf0-e891-11e6-9a86-2dafac5b250f.png"> (From https://developer.android.com/guide/topics/manifest/activity-element.html) In my app there's a `<ListView>` and a `<TextInput>` below it. Without this PR the UI pans which is a very bad user experience. Keyboard is hidden: <img width="437" alt="screenshot 2017-02-01 15 21 15" src="https://cloud.githubusercontent.com/assets/346214/22512814/23fc93d4-e892-11e6-9e45-94041dbe8eba.png"> Keyboard is shown: <img width="439" alt="screenshot 2017-02-01 15 26 56" src="https://cloud.githubusercontent.com/assets/346214/22513062/e4e1835c-e892-11e6-93b7-fe5616135b91.png"> --- Let's use "adjustResize", it seems to be a reasonable default in most cases and people can always change the constant in their AndroidManifest.xml Closes facebook#12154 Differential Revision: D4496428 fbshipit-source-id: c300ebe55bd93f8b243e0d7d0d6a132bc3a5a1c1
… Android Summary: When building the Chat example for react-navigation, I realized the default Android behavior doesn't actually work: <img width="868" alt="screenshot 2017-02-01 15 15 25" src="https://cloud.githubusercontent.com/assets/346214/22512559/518e3bf0-e891-11e6-9a86-2dafac5b250f.png"> (From https://developer.android.com/guide/topics/manifest/activity-element.html) In my app there's a `<ListView>` and a `<TextInput>` below it. Without this PR the UI pans which is a very bad user experience. Keyboard is hidden: <img width="437" alt="screenshot 2017-02-01 15 21 15" src="https://cloud.githubusercontent.com/assets/346214/22512814/23fc93d4-e892-11e6-9e45-94041dbe8eba.png"> Keyboard is shown: <img width="439" alt="screenshot 2017-02-01 15 26 56" src="https://cloud.githubusercontent.com/assets/346214/22513062/e4e1835c-e892-11e6-93b7-fe5616135b91.png"> --- Let's use "adjustResize", it seems to be a reasonable default in most cases and people can always change the constant in their AndroidManifest.xml Closes facebook#12154 Differential Revision: D4496428 fbshipit-source-id: c300ebe55bd93f8b243e0d7d0d6a132bc3a5a1c1
… Android Summary: When building the Chat example for react-navigation, I realized the default Android behavior doesn't actually work: <img width="868" alt="screenshot 2017-02-01 15 15 25" src="https://cloud.githubusercontent.com/assets/346214/22512559/518e3bf0-e891-11e6-9a86-2dafac5b250f.png"> (From https://developer.android.com/guide/topics/manifest/activity-element.html) In my app there's a `<ListView>` and a `<TextInput>` below it. Without this PR the UI pans which is a very bad user experience. Keyboard is hidden: <img width="437" alt="screenshot 2017-02-01 15 21 15" src="https://cloud.githubusercontent.com/assets/346214/22512814/23fc93d4-e892-11e6-9e45-94041dbe8eba.png"> Keyboard is shown: <img width="439" alt="screenshot 2017-02-01 15 26 56" src="https://cloud.githubusercontent.com/assets/346214/22513062/e4e1835c-e892-11e6-93b7-fe5616135b91.png"> --- Let's use "adjustResize", it seems to be a reasonable default in most cases and people can always change the constant in their AndroidManifest.xml Closes facebook#12154 Differential Revision: D4496428 fbshipit-source-id: c300ebe55bd93f8b243e0d7d0d6a132bc3a5a1c1
… Android Summary: When building the Chat example for react-navigation, I realized the default Android behavior doesn't actually work: <img width="868" alt="screenshot 2017-02-01 15 15 25" src="https://cloud.githubusercontent.com/assets/346214/22512559/518e3bf0-e891-11e6-9a86-2dafac5b250f.png"> (From https://developer.android.com/guide/topics/manifest/activity-element.html) In my app there's a `<ListView>` and a `<TextInput>` below it. Without this PR the UI pans which is a very bad user experience. Keyboard is hidden: <img width="437" alt="screenshot 2017-02-01 15 21 15" src="https://cloud.githubusercontent.com/assets/346214/22512814/23fc93d4-e892-11e6-9e45-94041dbe8eba.png"> Keyboard is shown: <img width="439" alt="screenshot 2017-02-01 15 26 56" src="https://cloud.githubusercontent.com/assets/346214/22513062/e4e1835c-e892-11e6-93b7-fe5616135b91.png"> --- Let's use "adjustResize", it seems to be a reasonable default in most cases and people can always change the constant in their AndroidManifest.xml Closes facebook#12154 Differential Revision: D4496428 fbshipit-source-id: c300ebe55bd93f8b243e0d7d0d6a132bc3a5a1c1
… Android Summary: When building the Chat example for react-navigation, I realized the default Android behavior doesn't actually work: <img width="868" alt="screenshot 2017-02-01 15 15 25" src="https://cloud.githubusercontent.com/assets/346214/22512559/518e3bf0-e891-11e6-9a86-2dafac5b250f.png"> (From https://developer.android.com/guide/topics/manifest/activity-element.html) In my app there's a `<ListView>` and a `<TextInput>` below it. Without this PR the UI pans which is a very bad user experience. Keyboard is hidden: <img width="437" alt="screenshot 2017-02-01 15 21 15" src="https://cloud.githubusercontent.com/assets/346214/22512814/23fc93d4-e892-11e6-9e45-94041dbe8eba.png"> Keyboard is shown: <img width="439" alt="screenshot 2017-02-01 15 26 56" src="https://cloud.githubusercontent.com/assets/346214/22513062/e4e1835c-e892-11e6-93b7-fe5616135b91.png"> --- Let's use "adjustResize", it seems to be a reasonable default in most cases and people can always change the constant in their AndroidManifest.xml Closes facebook#12154 Differential Revision: D4496428 fbshipit-source-id: c300ebe55bd93f8b243e0d7d0d6a132bc3a5a1c1
… Android Summary: When building the Chat example for react-navigation, I realized the default Android behavior doesn't actually work: <img width="868" alt="screenshot 2017-02-01 15 15 25" src="https://cloud.githubusercontent.com/assets/346214/22512559/518e3bf0-e891-11e6-9a86-2dafac5b250f.png"> (From https://developer.android.com/guide/topics/manifest/activity-element.html) In my app there's a `<ListView>` and a `<TextInput>` below it. Without this PR the UI pans which is a very bad user experience. Keyboard is hidden: <img width="437" alt="screenshot 2017-02-01 15 21 15" src="https://cloud.githubusercontent.com/assets/346214/22512814/23fc93d4-e892-11e6-9e45-94041dbe8eba.png"> Keyboard is shown: <img width="439" alt="screenshot 2017-02-01 15 26 56" src="https://cloud.githubusercontent.com/assets/346214/22513062/e4e1835c-e892-11e6-93b7-fe5616135b91.png"> --- Let's use "adjustResize", it seems to be a reasonable default in most cases and people can always change the constant in their AndroidManifest.xml Closes facebook#12154 Differential Revision: D4496428 fbshipit-source-id: c300ebe55bd93f8b243e0d7d0d6a132bc3a5a1c1
… Android Summary: When building the Chat example for react-navigation, I realized the default Android behavior doesn't actually work: <img width="868" alt="screenshot 2017-02-01 15 15 25" src="https://cloud.githubusercontent.com/assets/346214/22512559/518e3bf0-e891-11e6-9a86-2dafac5b250f.png"> (From https://developer.android.com/guide/topics/manifest/activity-element.html) In my app there's a `<ListView>` and a `<TextInput>` below it. Without this PR the UI pans which is a very bad user experience. Keyboard is hidden: <img width="437" alt="screenshot 2017-02-01 15 21 15" src="https://cloud.githubusercontent.com/assets/346214/22512814/23fc93d4-e892-11e6-9e45-94041dbe8eba.png"> Keyboard is shown: <img width="439" alt="screenshot 2017-02-01 15 26 56" src="https://cloud.githubusercontent.com/assets/346214/22513062/e4e1835c-e892-11e6-93b7-fe5616135b91.png"> --- Let's use "adjustResize", it seems to be a reasonable default in most cases and people can always change the constant in their AndroidManifest.xml Closes facebook#12154 Differential Revision: D4496428 fbshipit-source-id: c300ebe55bd93f8b243e0d7d0d6a132bc3a5a1c1
… Android Summary: When building the Chat example for react-navigation, I realized the default Android behavior doesn't actually work: <img width="868" alt="screenshot 2017-02-01 15 15 25" src="https://cloud.githubusercontent.com/assets/346214/22512559/518e3bf0-e891-11e6-9a86-2dafac5b250f.png"> (From https://developer.android.com/guide/topics/manifest/activity-element.html) In my app there's a `<ListView>` and a `<TextInput>` below it. Without this PR the UI pans which is a very bad user experience. Keyboard is hidden: <img width="437" alt="screenshot 2017-02-01 15 21 15" src="https://cloud.githubusercontent.com/assets/346214/22512814/23fc93d4-e892-11e6-9e45-94041dbe8eba.png"> Keyboard is shown: <img width="439" alt="screenshot 2017-02-01 15 26 56" src="https://cloud.githubusercontent.com/assets/346214/22513062/e4e1835c-e892-11e6-93b7-fe5616135b91.png"> --- Let's use "adjustResize", it seems to be a reasonable default in most cases and people can always change the constant in their AndroidManifest.xml Closes facebook#12154 Differential Revision: D4496428 fbshipit-source-id: c300ebe55bd93f8b243e0d7d0d6a132bc3a5a1c1
… Android Summary: When building the Chat example for react-navigation, I realized the default Android behavior doesn't actually work: <img width="868" alt="screenshot 2017-02-01 15 15 25" src="https://cloud.githubusercontent.com/assets/346214/22512559/518e3bf0-e891-11e6-9a86-2dafac5b250f.png"> (From https://developer.android.com/guide/topics/manifest/activity-element.html) In my app there's a `<ListView>` and a `<TextInput>` below it. Without this PR the UI pans which is a very bad user experience. Keyboard is hidden: <img width="437" alt="screenshot 2017-02-01 15 21 15" src="https://cloud.githubusercontent.com/assets/346214/22512814/23fc93d4-e892-11e6-9e45-94041dbe8eba.png"> Keyboard is shown: <img width="439" alt="screenshot 2017-02-01 15 26 56" src="https://cloud.githubusercontent.com/assets/346214/22513062/e4e1835c-e892-11e6-93b7-fe5616135b91.png"> --- Let's use "adjustResize", it seems to be a reasonable default in most cases and people can always change the constant in their AndroidManifest.xml Closes facebook#12154 Differential Revision: D4496428 fbshipit-source-id: c300ebe55bd93f8b243e0d7d0d6a132bc3a5a1c1
… Android Summary: When building the Chat example for react-navigation, I realized the default Android behavior doesn't actually work: <img width="868" alt="screenshot 2017-02-01 15 15 25" src="https://cloud.githubusercontent.com/assets/346214/22512559/518e3bf0-e891-11e6-9a86-2dafac5b250f.png"> (From https://developer.android.com/guide/topics/manifest/activity-element.html) In my app there's a `<ListView>` and a `<TextInput>` below it. Without this PR the UI pans which is a very bad user experience. Keyboard is hidden: <img width="437" alt="screenshot 2017-02-01 15 21 15" src="https://cloud.githubusercontent.com/assets/346214/22512814/23fc93d4-e892-11e6-9e45-94041dbe8eba.png"> Keyboard is shown: <img width="439" alt="screenshot 2017-02-01 15 26 56" src="https://cloud.githubusercontent.com/assets/346214/22513062/e4e1835c-e892-11e6-93b7-fe5616135b91.png"> --- Let's use "adjustResize", it seems to be a reasonable default in most cases and people can always change the constant in their AndroidManifest.xml Closes facebook#12154 Differential Revision: D4496428 fbshipit-source-id: c300ebe55bd93f8b243e0d7d0d6a132bc3a5a1c1
… Android Summary: When building the Chat example for react-navigation, I realized the default Android behavior doesn't actually work: <img width="868" alt="screenshot 2017-02-01 15 15 25" src="https://cloud.githubusercontent.com/assets/346214/22512559/518e3bf0-e891-11e6-9a86-2dafac5b250f.png"> (From https://developer.android.com/guide/topics/manifest/activity-element.html) In my app there's a `<ListView>` and a `<TextInput>` below it. Without this PR the UI pans which is a very bad user experience. Keyboard is hidden: <img width="437" alt="screenshot 2017-02-01 15 21 15" src="https://cloud.githubusercontent.com/assets/346214/22512814/23fc93d4-e892-11e6-9e45-94041dbe8eba.png"> Keyboard is shown: <img width="439" alt="screenshot 2017-02-01 15 26 56" src="https://cloud.githubusercontent.com/assets/346214/22513062/e4e1835c-e892-11e6-93b7-fe5616135b91.png"> --- Let's use "adjustResize", it seems to be a reasonable default in most cases and people can always change the constant in their AndroidManifest.xml Closes facebook#12154 Differential Revision: D4496428 fbshipit-source-id: c300ebe55bd93f8b243e0d7d0d6a132bc3a5a1c1
… Android Summary: When building the Chat example for react-navigation, I realized the default Android behavior doesn't actually work: <img width="868" alt="screenshot 2017-02-01 15 15 25" src="https://cloud.githubusercontent.com/assets/346214/22512559/518e3bf0-e891-11e6-9a86-2dafac5b250f.png"> (From https://developer.android.com/guide/topics/manifest/activity-element.html) In my app there's a `<ListView>` and a `<TextInput>` below it. Without this PR the UI pans which is a very bad user experience. Keyboard is hidden: <img width="437" alt="screenshot 2017-02-01 15 21 15" src="https://cloud.githubusercontent.com/assets/346214/22512814/23fc93d4-e892-11e6-9e45-94041dbe8eba.png"> Keyboard is shown: <img width="439" alt="screenshot 2017-02-01 15 26 56" src="https://cloud.githubusercontent.com/assets/346214/22513062/e4e1835c-e892-11e6-93b7-fe5616135b91.png"> --- Let's use "adjustResize", it seems to be a reasonable default in most cases and people can always change the constant in their AndroidManifest.xml Closes facebook#12154 Differential Revision: D4496428 fbshipit-source-id: c300ebe55bd93f8b243e0d7d0d6a132bc3a5a1c1
… Android Summary: When building the Chat example for react-navigation, I realized the default Android behavior doesn't actually work: <img width="868" alt="screenshot 2017-02-01 15 15 25" src="https://cloud.githubusercontent.com/assets/346214/22512559/518e3bf0-e891-11e6-9a86-2dafac5b250f.png"> (From https://developer.android.com/guide/topics/manifest/activity-element.html) In my app there's a `<ListView>` and a `<TextInput>` below it. Without this PR the UI pans which is a very bad user experience. Keyboard is hidden: <img width="437" alt="screenshot 2017-02-01 15 21 15" src="https://cloud.githubusercontent.com/assets/346214/22512814/23fc93d4-e892-11e6-9e45-94041dbe8eba.png"> Keyboard is shown: <img width="439" alt="screenshot 2017-02-01 15 26 56" src="https://cloud.githubusercontent.com/assets/346214/22513062/e4e1835c-e892-11e6-93b7-fe5616135b91.png"> --- Let's use "adjustResize", it seems to be a reasonable default in most cases and people can always change the constant in their AndroidManifest.xml Closes facebook#12154 Differential Revision: D4496428 fbshipit-source-id: c300ebe55bd93f8b243e0d7d0d6a132bc3a5a1c1
… Android Summary: When building the Chat example for react-navigation, I realized the default Android behavior doesn't actually work: <img width="868" alt="screenshot 2017-02-01 15 15 25" src="https://cloud.githubusercontent.com/assets/346214/22512559/518e3bf0-e891-11e6-9a86-2dafac5b250f.png"> (From https://developer.android.com/guide/topics/manifest/activity-element.html) In my app there's a `<ListView>` and a `<TextInput>` below it. Without this PR the UI pans which is a very bad user experience. Keyboard is hidden: <img width="437" alt="screenshot 2017-02-01 15 21 15" src="https://cloud.githubusercontent.com/assets/346214/22512814/23fc93d4-e892-11e6-9e45-94041dbe8eba.png"> Keyboard is shown: <img width="439" alt="screenshot 2017-02-01 15 26 56" src="https://cloud.githubusercontent.com/assets/346214/22513062/e4e1835c-e892-11e6-93b7-fe5616135b91.png"> --- Let's use "adjustResize", it seems to be a reasonable default in most cases and people can always change the constant in their AndroidManifest.xml Closes facebook#12154 Differential Revision: D4496428 fbshipit-source-id: c300ebe55bd93f8b243e0d7d0d6a132bc3a5a1c1
… Android Summary: When building the Chat example for react-navigation, I realized the default Android behavior doesn't actually work: <img width="868" alt="screenshot 2017-02-01 15 15 25" src="https://cloud.githubusercontent.com/assets/346214/22512559/518e3bf0-e891-11e6-9a86-2dafac5b250f.png"> (From https://developer.android.com/guide/topics/manifest/activity-element.html) In my app there's a `<ListView>` and a `<TextInput>` below it. Without this PR the UI pans which is a very bad user experience. Keyboard is hidden: <img width="437" alt="screenshot 2017-02-01 15 21 15" src="https://cloud.githubusercontent.com/assets/346214/22512814/23fc93d4-e892-11e6-9e45-94041dbe8eba.png"> Keyboard is shown: <img width="439" alt="screenshot 2017-02-01 15 26 56" src="https://cloud.githubusercontent.com/assets/346214/22513062/e4e1835c-e892-11e6-93b7-fe5616135b91.png"> --- Let's use "adjustResize", it seems to be a reasonable default in most cases and people can always change the constant in their AndroidManifest.xml Closes facebook#12154 Differential Revision: D4496428 fbshipit-source-id: c300ebe55bd93f8b243e0d7d0d6a132bc3a5a1c1
@janicduplessis Did your suggestion to make KeyboardAvoidingView do nothing on Android ever get implemented? |
This is a good workaround:
|
… Android Summary: When building the Chat example for react-navigation, I realized the default Android behavior doesn't actually work: <img width="868" alt="screenshot 2017-02-01 15 15 25" src="https://cloud.githubusercontent.com/assets/346214/22512559/518e3bf0-e891-11e6-9a86-2dafac5b250f.png"> (From https://developer.android.com/guide/topics/manifest/activity-element.html) In my app there's a `<ListView>` and a `<TextInput>` below it. Without this PR the UI pans which is a very bad user experience. Keyboard is hidden: <img width="437" alt="screenshot 2017-02-01 15 21 15" src="https://cloud.githubusercontent.com/assets/346214/22512814/23fc93d4-e892-11e6-9e45-94041dbe8eba.png"> Keyboard is shown: <img width="439" alt="screenshot 2017-02-01 15 26 56" src="https://cloud.githubusercontent.com/assets/346214/22513062/e4e1835c-e892-11e6-93b7-fe5616135b91.png"> --- Let's use "adjustResize", it seems to be a reasonable default in most cases and people can always change the constant in their AndroidManifest.xml Closes facebook/react-native#12154 Differential Revision: D4496428 fbshipit-source-id: c300ebe55bd93f8b243e0d7d0d6a132bc3a5a1c1
When building the Chat example for react-navigation, I realized the default Android behavior doesn't actually work:
(From https://developer.android.com/guide/topics/manifest/activity-element.html)
In my app there's a
<ListView>
and a<TextInput>
below it. Without this PR the UI pans which is a very bad user experience.Keyboard is hidden:
Keyboard is shown:
Let's use "adjustResize", it seems to be a reasonable default in most cases and people can always change the constant in their AndroidManifest.xml if needed. Definitely better than the default "adjustUnspecified" we've been using until now.
This is a BREAKING change because some libraries like react-native-keyboard-spacer might be making assumptions about the constant being set to "adjustUnspecified" and therefore might not work correctly in new apps. Will create an issue on that repo, tweet about this change and add it to the breaking changes doc.
Test plan (required)
Soft keyboard is handled correctly without the use of
KeyboardAvoidingView
or anyKeyboardSpacer
- no need to hack around the keyboard in JS, Android resizes the UI for us: