我正在努力解决键盘将应用程序推到视图之外的常见问题。
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上的其他帖子没有用,因为adjustResize设置不起作用,我使用的是react-native而不是原生的android。答案 0 :(得分:3)
如果我记得,keyboardwillShow
和keyboardWillHide
are not fired on Android。
此行为应该是Android原生的,您是否尝试过如下设置windowSoftInputMode而不是侦听事件?
android:windowSoftInputMode="adjustPan"
如果这对您不起作用,您可以查看KeyboardAvoidingView
,新0.34
。它似乎正在解决你想要完成的事情。
它是解决需要移开虚拟键盘的常见问题的组件。它可以根据键盘的位置自动调整其位置或底部填充。
答案 1 :(得分:0)
KeyboardAvoidingView
表现比我预期的要糟糕,所以我用ScrollView
创建了我自己的解决方案,它包裹了所有应用(高度是在Dimensions
的帮助下设置的),然后是任何输入点击 - 取决于输入的位置(屏幕的下半部/上半部分 - 在UIManager.measure
和TextInputState.currentlyFocusedField
的帮助下)我是否滚动视图 - 这对您有用吗? (在很多情况下,将视图调整到较小的高度将无法工作(看起来不错)) - 我可以提供一些代码