react native 使用 KeyboardAvoidingView 无效
组件介绍:
该组件将根据键盘高度自动调整其高度、位置或底部填充,以在显示虚拟键盘时保持可见。
官方文档:
遇到的问题:
- KeyboardAvoidingView 标签要设置
behavior={Platform.OS === "ios" ? "padding" : "height"}
,iOS系统要使用padding否则样式可能会达不到预期效果。 - KeyboardAvoidingView 包裹的内容最外层的盒子的
justifyContent
需要设置为flex-end、space-around
等(具体使用哪个要根据需求确定),默认的flex-start
会导致不生效。 - KeyboardAvoidingView 包裹的内容最外层的盒子的高度设置为
100%
时,或者设置flex:1
时,也可能会导致无效(在我的项目里出现了这个问题)。
官方示例代码:
import React from 'react'; import { View, KeyboardAvoidingView, TextInput, StyleSheet, Text, Platform, TouchableWithoutFeedback, Button, Keyboard, } from 'react-native'; const KeyboardAvoidingComponent = () => { return ( <KeyboardAvoidingView behavior={Platform.OS === 'ios' ? 'padding' : 'height'} style={styles.container}> <TouchableWithoutFeedback onPress={Keyboard.dismiss}> <View style={styles.inner}> <Text style={styles.header}>Header</Text> <TextInput placeholder="Username" style={styles.textInput} /> <View style={styles.btnContainer}> <Button title="Submit" onPress={() => null} /> </View> </View> </TouchableWithoutFeedback> </KeyboardAvoidingView> ); }; const styles = StyleSheet.create({ container: { flex: 1, }, inner: { padding: 24, flex: 1, justifyContent: 'space-around', }, header: { fontSize: 36, marginBottom: 48, }, textInput: { height: 40, borderColor: '#000000', borderBottomWidth: 1, marginBottom: 36, }, btnContainer: { backgroundColor: 'white', marginTop: 12, }, }); export default KeyboardAvoidingComponent;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程