在 React Native Android 中更改软输入模式

React Native使Web开发人员更容易使用Web技术React创建移动应用程序,这很棒,因为如果您已经熟悉React,就更容易开始。

但事实是,最终,你是在移动平台上开发,所以使用 React Native 也适用于开发完全本地应用程序的相同规则,而浏览器现在已经脱离了背景。

键盘打开时的屏幕行为

Android 默认情况下,当我们打开键盘时,将视图调整大小,这使我们能够专注于我们当前正在交互的输入。

例如,下面的图像显示了当您点击输入时所描述的行为:

login

这是很酷的,但也许我们想要另一种行为. 例如,想象一下,我们有一个组件来保存这样的位置:

 1import React from "react";
 2import { View, Text, Button } from "react-native";
 3import AppInput from "./AppInput";
 4
 5export default () => (
 6  <View style={{ flex: 1, justifyContent: "space-between" }}>
 7    <View style={{ flex: 1 }}>
 8      <AppInput
 9        label="Name"
10        value=""
11      />
12      <AppInput
13        label="Description 4"
14        value=""
15      />
16      {/* ... */}
17    </View>
18
19    <View style={{ flexDirection: "row" }}>
20      <View style={{ flex: 1, paddingRight: 3 }}>
21        <Button
22          color="#999"
23          title="Cancel"
24        />
25      </View>
26      <View style={{ flex: 1, paddingLeft: 3 }}>
27        <Button title="Confirm" />
28      </View>
29    </View>
30  </View>
31)

它将渲染到屏幕上有两个输入和屏幕底部的一对按钮,如下图像所示:

Save

然后,如果我们点击第一个输入,按钮被推高,就在键盘上方:

Save keyboard open

但是我们可以调整 Android 宣言以更改默认行为。

安卓宣言

如果你没有看到它们,可能是因为你已经使用了‘create-react-native-app’并尚未退出,但一旦你这样做,你将获得访问这些项目,以及能够安装本地依赖。

在Android项目中,你会发现Android宣言:一个包含有关Android应用程序的信息的文件,如权限,元数据,活动属性等。

在不同的默认属性中,你可以看到 android:windowSoftInputMode. 这是我们在打开键盘时可以更改视图行为的属性,默认情况下具有 adjustResize 的值。

如果我们想要更改它,以保持按钮下降,并避免在打开屏幕时更改或做任何事情,我们可以将其更改为调整Pan:

1[label android/app/src/main/AndroidManifest.xml (partial)]
2<activity
3  android:name=".MainActivity"
4  android:windowSoftInputMode="adjustPan"
5  ...
6  > ... </activity>

然后它会出现如下:

Save keyboard open

包装上

我们已经看到我们如何在Android上打开键盘时改变屏幕行为. 这个解决方案是全球性的应用程序,快速应用。

Android docs中,您可以看到此行为的所有可用模式。

保持冷静

Published At
Categories with 技术
Tagged with
comments powered by Disqus