你能否在React Native Android中禁用横屏全屏编辑?

11
在 Android 的 EditText 元素中,你可以通过添加 android:imeOptions="flagNoExtractUi" 属性防止在横屏模式下触发 "全屏编辑模式"(详见这里)。
那么,在 React Native 的 TextInput 组件中有没有办法复制相同的行为呢?我已经查阅了文档和 StackOverflow,但是没有找到解决方案。
2个回答

13

从v0.40.0版本开始,React Native的TextInput组件增加了属性disableFullscreenUI,该属性在内部设置了imeOptions="flagNoExtractUi"

<TextInput disableFullscreenUI={true} />


4
一种解决方案是编写一个自定义的本地组件并将其绑定到您的React Native项目。你可以创建一个自定义的EditText,默认情况下将imeOptions设置为android:imeOptions="flagNoExtractUi",或者更动态的行为是在自定义EditText中创建一个setter,并使用@ReactProp暴露出来。这样,您就可以通过组件的props从React Native项目中设置它了。
编写自定义UI组件(特别是像这样简单的组件)非常直接和容易,比听起来要容易得多。有一个相当不错的文档和大量的教程可供参考。
希望这可以帮助到您。

谢谢!我接受了,因为目前看来这可能是唯一的方法。我会尝试一下,如果成功了,我会在这里发布组件链接供其他人使用。 - Nate
通过 setNativeProps 不可能实现这个吗?在 Android 上有这个东西吗? - Matt Foley
@MattFoley 在React Native组件(Text)上使用setNativeProps并不意味着您可以访问未公开给React Native的本地组件(TextView)的属性。正如文档所述,您使用setNativeProps直接对组件进行更改而无需使用状态/道具来触发整个子树的重新渲染。如果本地组件的属性在React Native中不可用,则除非创建自己的自定义本地组件并将其绑定到React Native,否则无法访问它。 - Georgios

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接