React-native模式对话框隐藏自定义键盘

时间:2018-04-23 12:42:23

标签: android react-native modal-dialog

我们在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-modalthis 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>
    ...
}

enter image description here

1 个答案:

答案 0 :(得分:0)

如果您的活动具有此属性,请将其删除:

<activity 
    android:windowSoftInputMode="adjustResize">