android 如何避免有布局跳转时,避免键盘与底部对齐的看法?

svmlkihl  于 2023-06-04  发布在  Android
关注(0)|答案(1)|浏览(119)

我有一个视图,我想在屏幕底部的位置与position: absolute, bottom: 0,并保持它只是上面的键盘。我不能让这在Android上工作而不破坏布局。
在iOS上,这很容易,react-native-reanimateduseAnimatedKeyboard可以执行以下操作:

const keyboard = useAnimatedKeyboard()

const bottomStyle = useAnimatedStyle(() => ({
  paddingBottom: keyboard.height.value,
}))

然而,这在Android上会中断,因为我需要在应用程序的其余部分将android:windowSoftInputMode设置为"adjustResize",当调用useAnimatedKeyboard时,这会被修改,导致应用程序在应用程序重新调整到新设置之前稍微向上移动。
当我禁用此功能时,我注意到在键盘第一次打开时,视图会在瞬间卡到键盘上,然后移回屏幕底部。在任何其他屏幕上和任何其他时候,我这样做了没有关闭应用程序,它会表现正常(停留在屏幕底部的任何时候,没有转移)。这是一个问题,因为如果我使用Keyboard事件侦听器来监视keyboardDidOpen事件以获取键盘高度,并将其用作View的填充,这将正确地将View定位在键盘上方,但在第一次打开键盘时,这将导致我的View在键盘上方出现一个完整的键盘高度,然后才安顿下来。

qnzebej0

qnzebej01#

我想创造这个问题,这样未来的人们就不会陷入和我一样的问题。
最后,我注意到渲染树上有一个KeyboardAvoidingView,但由于它将enabled设置为false,我认为这不会是一个问题。
然而,我注意到来自KeyboardAvoidingView的behavior仍然影响我的组件,即使它被禁用了。因此,禁用KeyboardAvoidingView是不够的,但是当我完全删除behavior prop 时,这个问题就解决了。
因此,在第一次打开键盘时,下面的操作会导致底部对齐的View向上“跳”一会儿,然后返回到正确的位置:

<KeyboardAvoidingView enabled={false} behavior="height">
{/* Rest of the screen */}
</KeyboardAvoidingView>

但这将使View从键盘第一次打开时就能正确运行:

<KeyboardAvoidingView enabled={false}>
{/* Rest of the screen */}
</KeyboardAvoidingView>

相关问题