React Native:显示键盘后更新应用布局

时间:2016-10-20 07:22:17

标签: android keyboard react-native

我正在努力解决键盘将应用程序推到视图之外的常见问题。

android:windowSoftInputMode =“adjustResize”设置不起作用。

现在我按照键盘手动调整视图大小如下:

keyboardWillShow(e) {
    setTimeout(()=> {
        this.keyboardOffset = e.endCoordinates.height;
    }, 500)
}

keyboardWillHide(e) {
    this.keyboardOffset = 0;
}

///...

const resultingHeight = windowHeight - this.keyboardOffset - Navigator.NavigationBar.Styles.General.TotalNavHeight;

viewStyle = {
   height: resultingHeight
};

这几乎可行。但我的问题是应用程序被推到视图之外,然后keyboardWillShow被解雇并调整视图大小正确,然后没有任何反应。在显示键盘后,Android不会更新布局。

enter image description here

编辑:SO上的其他帖子没有用,因为adjustResize设置不起作用,我使用的是react-native而不是原生的android。

2 个答案:

答案 0 :(得分:3)

如果我记得,keyboardwillShowkeyboardWillHide are not fired on Android

此行为应该是Android原生的,您是否尝试过如下设置windowSoftInputMode而不是侦听事件?

android:windowSoftInputMode="adjustPan"

如果这对您不起作用,您可以查看KeyboardAvoidingView,新0.34。它似乎正在解决你想要完成的事情。

  

它是解决需要移开虚拟键盘的常见问题的组件。它可以根据键盘的位置自动调整其位置或底部填充。

KeyboardAvoidingView Docs

答案 1 :(得分:0)

KeyboardAvoidingView表现比我预期的要糟糕,所以我用ScrollView创建了我自己的解决方案,它包裹了所有应用(高度是在Dimensions的帮助下设置的),然后是任何输入点击 - 取决于输入的位置(屏幕的下半部/上半部分 - 在UIManager.measureTextInputState.currentlyFocusedField的帮助下)我是否滚动视图 - 这对您有用吗? (在很多情况下,将视图调整到较小的高度将无法工作(看起来不错)) - 我可以提供一些代码