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不会更新布局。

在这里输入图像说明

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

  • 默认Web浏览器中的React-Native Open Url
  • 确保你有一个Android模拟器运行或设备连接和拥有
  • React本机错误:元素types无效:期望一个string或类/函数,但得到:对象
  • 在React Native中,如何绑定一个文本文件并在运行时读取它的值?
  • React Native:如何检测我的代码是否在模拟器中运行?
  • 无法在反应原生项目中扩展Zip
  • 位置请求在React-Native的Android模拟器上超时
  • 错误:包名com.native期望的<identifier>
  • 如果我记得, keyboardwillShowkeyboardWillHide 不会在Android上被解雇 。

    这种行为应该是Android本地的,你有没有尝试设置windowSoftInputMode如下,而不是听事件?

     android:windowSoftInputMode="adjustPan" 

    如果这不适合你,你可以看看KeyboardAvoidingView0.34新。 它似乎在解决你正在尝试完成的事情。

    它是解决常见的需要摆脱虚拟键盘方式的视图问题的一个组件。 它可以根据键盘的位置自动调整其位置或底部填充。

    KeyboardAvoidingView文件

    KeyboardAvoidingView行为比我预期的要差,所以我创build了自己的解决scheme,用ScrollView来包装所有的应用程序(高度是在Dimensions帮助下设置的),然后在任何input点击 – 取决于input的位置(屏幕的下半部分 -在UIManager.measureTextInputState.currentlyFocusedField帮助下)我滚动视图或不 – 这会为你工作吗? (在很多情况下调整视图到较小的高度将不起作用(看起来不错)) – 我可以提供一些代码