我们在react-native中使用custom keyboard工作正常(这只是android,这里不需要iOS),但是当与模态对话框一起使用时会出现问题。
如下面的屏幕截图所示,键盘弹出以下模式,无法输入任何值。我们已经为模态组件尝试了几个选项,包括默认的反应原生模态组件,但它们都给出了相同的结果。
这个SO comment on a similar issue让我觉得它可能与模态对话框上设置的标志有关,如here所述:
通常,您希望在当前输入法的顶部显示对话框,因为它没有理由接受文本。您可以通过使用以下代码设置WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM窗口标志(假设您的Dialog采用默认的输入焦点)来执行此操作:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
但是当我们使用标准的Android键盘时,它会按预期显示在模态上方,所以这似乎不是问题。 事实上,键盘是作为一个单独的RN应用程序启动的:
rootView.startReactApplication(
((ReactApplication) activity.getApplication()).getReactNativeHost().getReactInstanceManager(),
"CustomKeyboard",
bundle);
final float scale = activity.getResources().getDisplayMetrics().density;
RelativeLayout.LayoutParams lParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, Math.round(216*scale));
lParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
layout.addView(rootView, lParams);
然后在将文本输入聚焦为:
时显示activity.addContentView(keyboard, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
我不知道android,但我怀疑在创建内容视图时我需要传递一些额外的参数,例如these,以确保它可以超越我的模态。我是在正确的轨道上吗?关于这些参数可能是什么的任何暗示?
编辑:
这是相关代码的一部分(我认为)。 react-native-modal
为this one,但使用react-native的默认模态组件会产生相同的结果:
import Modal from 'react-native-modal';
...(parent component code)...
render() {
...
<Modal isVisible={this.state.isShowingDialog}>
...(modal box content, all inside a <View>)...
</Modal>
...
}
答案 0 :(得分:0)
如果您的活动具有此属性,请将其删除:
<activity
android:windowSoftInputMode="adjustResize">