-
Notifications
You must be signed in to change notification settings - Fork 24.4k
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
[Android] KeybordAvoidingView not working on react-native 0.72.1 #38152
Comments
|
Steps to reproduce the bug:
Finally you will see that the KeyboardAvoidingView will not work on the 0.72.1 version. |
Hey @selimbaruti, please provide a link to a reproducer project (a repository). The snippet is not sufficient. |
This is the repo that KeyboardAvoidingView works correctly https://github.com/selimbaruti/keyboardavoidingview7111 (version 0.71.11) |
@cortinico Did you test it? |
Nope I haven't tested it. We receive hundreds of issue every day and we're a small team, so we can't just test or even fix everything. Having a repro will help as someone else from the community could look into it and potentially fix it, while we find the time to investigate this issue. |
same issue |
Faced the same issue after upgrading to expo sdk 49 with react native 0.72.1. |
Same issue here with 0.72.3 @selimbaruti Did you solve it? |
I haven't found any solution for it |
I seem to be having the same issue. I'm using
|
same issue here, please do something |
Same issue here. I am trying to upgrade the |
Hey guys, In my case, the following line was the reason of the bug :
Do you have this config in your project ? |
No, I don't have this in my project |
You can try "adjustPan", but it doesn't work perfectly: bottom border of input can be cut off Also if your input is not inside ScrollView you can try flex:1 and justifyContent: "flex-end" for screen container |
I'm upgrading an old project from RN 0.66.1 to 0.72.3 and I'm noticing this problem as well on Android. |
I use 'adjustPan' with behavior={Platform.OS === 'ios' ? 'padding' : undefined} for KeyboardAvoidingView and it doesn't work perfectly but it works |
I added a repository https://github.com/andreacassani/kav-test-android where you can compare the behavior on RN 0.72.3 vs 0.71.12 (should be the last version before 0.72). I think something happened between 71.12 and 72.3 that broke how KeyboardAvoidingView works on Android. Also I'd like to add that I've noticed more consistent behavior using
as others have posted before, instead of
which is the approach shown in the docs (https://reactnative.dev/docs/keyboardavoidingview). I hope this can help someone with more Android skills than me narrow down the problem. |
So it looks like this is an issue with the ScrollView rather than the KeyboardAvoidingView. In RN 0.72.0 681b35daab the following line was added to Line 1073 in aab5285
Removing this line makes ScrollView nested inside KeyboardAvoidingView to work again in my project. |
Please, can you create a PR for it? |
…inside a KeyboardAvoidingView (#38728) Summary: Starting from RN 0.72.0, when we nest a ScrollView inside a KeyboardAvoidingView, the ScrollView doesn't respond properly to the Keyboard on Android. https://github.com/facebook/react-native/assets/32062066/a62b5a42-6817-4093-91a2-7cc9e4a315bb This issue is due to a change made in #36104, which was added to fix #32235. That commit changed this line of code to abort the Scroller animation if a new call to the `scrollTo` method was made: https://github.com/facebook/react-native/blob/aab52859a447a8257b106fe307008af218322e3d/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java#L1073 Apparently, this is the same method that scrolls the ScrollView in response to the Keyboard opening on Android. So, here comes my proposal for a fix that doesn't break #36104 and fixes #38152. When we open the Keyboard, the call stack is as follows: - InputMethodManager - AndroidIME - InsetsController - `ReactScrollView.scrollTo` gets called When we use the ScrollView method `scrollTo` directly from the UI, the call stack is different as it goes through: - ReactScrollViewCommandHelper - ReactScrollViewManager - `ReactScrollView.scrollTo` gets called We can move `mScroller.abortAnimation();` from `ReactScrollView.scrollTo` to the `ReactScrollViewManager.scrollTo` method so that it gets called only when we call `scrollTo` from the UI and not when the `scrollTo` method is called by other sources. https://github.com/facebook/react-native/assets/32062066/9c10ded3-08e5-48e0-9a85-0987d62de011 ## Changelog: [ANDROID] [FIXED] - Fixed ScrollView not responding to Keyboard events when nested inside a KeyboardAvoidingView Pull Request resolved: #38728 Test Plan: You can see the issue and the proposed fixes in this repo: [kav-test-android](https://github.com/andreacassani/kav-test-android). Please refer to the `kav_test_fix` folder and to the [readme](https://github.com/andreacassani/kav-test-android/blob/main/README.md). Reviewed By: NickGerleman Differential Revision: D47972445 Pulled By: ryancat fbshipit-source-id: e58758d4b3d5318b947b42a88a56ad6ae69a539c
fixed on 0.72.4 |
@efstathiosntonas unfortunately, this issue is not solved yet. Some as the others, on iOS work perfectly, but on android does not. |
@efstathiosntonas the issue is not fixed, still not working |
…inside a KeyboardAvoidingView (facebook#38728) Summary: Starting from RN 0.72.0, when we nest a ScrollView inside a KeyboardAvoidingView, the ScrollView doesn't respond properly to the Keyboard on Android. https://github.com/facebook/react-native/assets/32062066/a62b5a42-6817-4093-91a2-7cc9e4a315bb This issue is due to a change made in facebook#36104, which was added to fix facebook#32235. That commit changed this line of code to abort the Scroller animation if a new call to the `scrollTo` method was made: https://github.com/facebook/react-native/blob/aab52859a447a8257b106fe307008af218322e3d/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java#L1073 Apparently, this is the same method that scrolls the ScrollView in response to the Keyboard opening on Android. So, here comes my proposal for a fix that doesn't break facebook#36104 and fixes facebook#38152. When we open the Keyboard, the call stack is as follows: - InputMethodManager - AndroidIME - InsetsController - `ReactScrollView.scrollTo` gets called When we use the ScrollView method `scrollTo` directly from the UI, the call stack is different as it goes through: - ReactScrollViewCommandHelper - ReactScrollViewManager - `ReactScrollView.scrollTo` gets called We can move `mScroller.abortAnimation();` from `ReactScrollView.scrollTo` to the `ReactScrollViewManager.scrollTo` method so that it gets called only when we call `scrollTo` from the UI and not when the `scrollTo` method is called by other sources. https://github.com/facebook/react-native/assets/32062066/9c10ded3-08e5-48e0-9a85-0987d62de011 ## Changelog: [ANDROID] [FIXED] - Fixed ScrollView not responding to Keyboard events when nested inside a KeyboardAvoidingView Pull Request resolved: facebook#38728 Test Plan: You can see the issue and the proposed fixes in this repo: [kav-test-android](https://github.com/andreacassani/kav-test-android). Please refer to the `kav_test_fix` folder and to the [readme](https://github.com/andreacassani/kav-test-android/blob/main/README.md). Reviewed By: NickGerleman Differential Revision: D47972445 Pulled By: ryancat fbshipit-source-id: e58758d4b3d5318b947b42a88a56ad6ae69a539c
Any update? When it will be fixed? |
Still seeing this issue. |
Still not working as expected in Android |
If that can help, this worked for me: In app.json {
"expo": {
"android": {
"softwareKeyboardLayoutMode": "pan"
}
}
} In your component <KeyboardAvoidingView
style={{
width: '100%',
paddingBottom: isAndroid ? 20 : 0,
}}
behavior={isAndroid ? 'position' : 'padding'}>
{...content}
</KeyboardAvoidingView> Something like this... |
I faced the same situation when upgrading project from version 0.68 -> 0.72.4 |
https://github.com/wix-incubator/react-native-keyboard-aware-scrollview I used this solution and successfully replaced it. |
Description
After I upgraded RN version to 0.72.1, KeyboardAvoidingView isn't working anymore in Android.
React Native Version
0.72.1
Output of
npx react-native info
System:
OS: macOS 13.0
CPU: (8) arm64 Apple M2
Memory: 135.16 MB / 16.00 GB
Shell: 5.8.1 - /bin/zsh
Binaries:
Node: 16.20.0 - ~/.nvm/versions/node/v16.20.0/bin/node
Yarn: 1.22.19 - /opt/homebrew/bin/yarn
npm: 8.19.4 - ~/.nvm/versions/node/v16.20.0/bin/npm
Watchman: 2023.05.22.00 - /opt/homebrew/bin/watchman
Managers:
CocoaPods: 1.12.1 - /Users/evolutit/.rvm/gems/ruby-2.7.6/bin/pod
SDKs:
iOS SDK:
Platforms: DriverKit 22.2, iOS 16.2, macOS 13.1, tvOS 16.1, watchOS 9.1
Android SDK: Not Found
IDEs:
Android Studio: 2022.1 AI-221.6008.13.2211.9514443
Xcode: 14.2/14C18 - /usr/bin/xcodebuild
Languages:
Java: 11.0.18 - /usr/bin/javac
npmPackages:
@react-native-community/cli: Not Found
react: 18.2.0 => 18.2.0
react-native: 0.71.11 => 0.71.11
react-native-macos: Not Found
npmGlobalPackages:
react-native: Not Found
Steps to reproduce
Try to implement KeyboardAvoidingView and test it in Android
Snack, code example, screenshot, or link to a repository
Version 0.72.1
Version 0.71.1
The text was updated successfully, but these errors were encountered: