-
-
Notifications
You must be signed in to change notification settings - Fork 771
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
[v4] BottomSheet close (while dismissing keyboard) snaps to intermediate position [Android only] #1072
Comments
Having the same issue. The current solution is to wait for the keyboard to hide and then call |
Hey @terrysahaidak , how do you programmatically wait for the keyboard to hide to trigger the sheet close when done? I was trying to do that for Android as a hack but it always triggers simultaneously. @gorhom Is there any way to specify/force the on close position to be relative to the screen dimension and not the dimensions of the screen - keyboard height? I think something along that is the culprit of this bug. |
This is the current behavior btw: Working (IOS) Screen.Recording.2022-08-22.at.1.47.23.PM.movNot Working (Android) Screen.Recording.2022-08-22.at.1.46.00.PM.mov |
Here is my workaround, not elegant, but seems to be working. |
Thanks for sharing, really appreciate it. |
@gorhom I think I found the root cause of the differing behavior based on the platform: In component BottomSheetContainer, function handleContainerLayout uses # console log of values in handleContainerLayout callback
# android
height: 791.272705078125, WINDOW_HEIGHT: 791.2727272727273
height: 510.18182373046875, WINDOW_HEIGHT: 791.2727272727273 <---- changes when keyboard opens
height: 791.272705078125, WINDOW_HEIGHT: 791.2727272727273 <---- changes when keyboard closes
# ios
height: 844, WINDOW_HEIGHT: 844 <---- never changes when the keyboard opens This leads to inconsistent behaviors across platforms to anything related to animatedContainerHeight and keyboard usage. So a design decision must be made to fix this. Either Android shouldn't trigger the callback on keyboard open/close (or use I don't know the implications of these changes, but it's a start on getting this fixed. ** UPDATE ** The issue is contingent on having the Android keyboard in 'adjustResize' mode and not 'adjustPan'. |
@bombillazo i tried both adjust resize and adjust pan and both are broken for me. |
Seems like I had a typo where I was calling So basically when you navigate to this modal - make sure you use adjust pan. |
@gorhom I am also facing this issue in version 4.4.3. Any solution for this? |
Facing this issue for const BottomSheetWrapper = () => {
const [isVisible, setIsVisible] = useState(true);
useEffect(() => {
const keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', () => {
setIsVisible(false);
});
const keyboardDidHideListener = Keyboard.addListener('keyboardDidHide', () => {
setIsVisible(true);
});
return () => {
keyboardDidShowListener.remove();
keyboardDidHideListener.remove();
};
}, []);
if (!isVisible) {
return null;
}
return (
<BottomSheet />
)
} Hope this helps. |
This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days. |
This issue was closed because it has been stalled for 5 days with no activity. |
This is also affecting ios |
For any interested, I have a patch here while the PR is reviewed: #1164 (comment) Please let me know if you run into any issue 😄 |
@terrysahaidak Thanks for sharing your workaround. Setting a timeout of 500ms on Android before closing the sheet works for me too. In my case changing |
Setting a timeout only sometimes work. This bug is still happening. |
This is still an issue |
Experiencing this in v5 on Android only. |
Bug
Currently on Android, when programmatically closing an open BottomSheet at the same time the Keyboard is open (not using a swipe down gesture or dragging), the closing animations start but the BottomSheet closes to where the Keyboard edge was when open, not the bottom of the screen. This happens when you have a TextInput inside the BottomSheet that opens the Keyboard and you have a close button that closes both.
I've tried with
close
,forceClose
,snapToIndex(-1)
orsnapToPosition(0)
functions when using Keyboard.dismiss(). It works as expected on IOS but for Android calling the close command will not move the sheet all the way to the true screen bottom.Environment info
Steps To Reproduce
It seems the calculation for closing the BottomSheet on Android is using the screen height based on where the keyboard top edge ends and not the bottom edge of the screen. I need the close position to be the screen bottom end.
Describe what you expected to happen:
Reproducible sample code
Couldn't get the repo to work though.
The text was updated successfully, but these errors were encountered: