我有一个视图,我想在屏幕底部的位置与position: absolute, bottom: 0
,并保持它只是上面的键盘。我不能让这在Android上工作而不破坏布局。
在iOS上,这很容易,react-native-reanimated
的useAnimatedKeyboard
可以执行以下操作:
const keyboard = useAnimatedKeyboard()
const bottomStyle = useAnimatedStyle(() => ({
paddingBottom: keyboard.height.value,
}))
然而,这在Android上会中断,因为我需要在应用程序的其余部分将android:windowSoftInputMode
设置为"adjustResize"
,当调用useAnimatedKeyboard
时,这会被修改,导致应用程序在应用程序重新调整到新设置之前稍微向上移动。
当我禁用此功能时,我注意到在键盘第一次打开时,视图会在瞬间卡到键盘上,然后移回屏幕底部。在任何其他屏幕上和任何其他时候,我这样做了没有关闭应用程序,它会表现正常(停留在屏幕底部的任何时候,没有转移)。这是一个问题,因为如果我使用Keyboard事件侦听器来监视keyboardDidOpen
事件以获取键盘高度,并将其用作View的填充,这将正确地将View定位在键盘上方,但在第一次打开键盘时,这将导致我的View在键盘上方出现一个完整的键盘高度,然后才安顿下来。
1条答案
按热度按时间qnzebej01#
我想创造这个问题,这样未来的人们就不会陷入和我一样的问题。
最后,我注意到渲染树上有一个
KeyboardAvoidingView
,但由于它将enabled
设置为false
,我认为这不会是一个问题。然而,我注意到来自KeyboardAvoidingView的
behavior
仍然影响我的组件,即使它被禁用了。因此,禁用KeyboardAvoidingView
是不够的,但是当我完全删除behavior
prop 时,这个问题就解决了。因此,在第一次打开键盘时,下面的操作会导致底部对齐的
View
向上“跳”一会儿,然后返回到正确的位置:但这将使
View
从键盘第一次打开时就能正确运行: