KeyboardAvoidingView 在本机反应中使用过多的填充来推高内容

Posted

技术标签:

【中文标题】KeyboardAvoidingView 在本机反应中使用过多的填充来推高内容【英文标题】:KeyboardAvoidingView is pushing up content with excessive padding in react native 【发布时间】:2017-10-30 17:23:21 【问题描述】:

我无法让 KeyboardAvoidingView 正常工作。对于类似的屏幕,它运行平稳,但是,对于另一个屏幕,它会将内容推到屏幕上的位置太高,从而在两者之间增加了过多的空间。有什么办法吗?

代码:

<KeyboardAvoidingView behavior="padding" style=styles.container>
         this.props.signNameErr &&
            (<Text style=color: 'red'>this.props.errMessage</Text>)
          
      <View style=styles.formContainer>
        <TextInput
          style=styles.formInput
          placeholderTextColor="rgba(255,255,255,0.7)"
          underlineColorandroid='rgba(0,0,0,0)'
          returnKeyType="next"
          autoCorrect=false
          onChangeText=(full_name)=> this.setState(full_name)
          value=this.state.fullname
          placeholder="Enter Full Name"
          />
          this.props.signEmailErr &&
            (<Text style=color: 'red'>this.props.errMessage</Text>)
          
        <TextInput
          style=styles.formInput
          placeholderTextColor="rgba(255,255,255,0.7)"
          underlineColorAndroid='rgba(0,0,0,0)'
          returnKeyType="next"
          keyboardType="email-address"
          autoCapitalize="none"
          autoCorrect=false
          onChangeText=(email)=> this.setState(email)
          value=this.state.email
          placeholder="Enter Email"
          keyboardType="email-address"
          />
           this.props.signPwErr &&
            (<Text style=color: 'red'>this.props.errMessage</Text>)
          
        <TextInput
          style=styles.formInput
          placeholderTextColor="rgba(255,255,255,0.7)"
          underlineColorAndroid='rgba(0,0,0,0)'
          returnKeyType="next"
          autoCorrect=false
          onChangeText=(password)=> this.setState(password)
          secureTextEntry=this.state.togglePW
          value=this.state.password
          placeholder="Create Password (Min. 6 Char)"
          />
        <TouchableOpacity style=styles.buttonContainer onPress=this.handleSignup>
          <Text style=styles.buttonText>SIGN UP</Text>
        </TouchableOpacity>
      </View >
      </KeyboardAvoidingView>

【问题讨论】:

【参考方案1】:

你可以设置padding,你甚至可以为android和ios设置

import KeyboardAvoidingView,Platform, from 'react-native';

<KeyboardAvoidingView 
  behavior='padding'
  keyboardVerticalOffset=
  Platform.select(
     ios: () => 0,
     android: () => 200
  )()
>
   ...content...
</KeyboardAvoidingView>

只是一个例子,尝试一下并设置你喜欢的方式。填充也可以是负值,例如 -300。

【讨论】:

@Brunaine 我按照你的代码进行操作,但最后我看到了更多的噱头

以上是关于KeyboardAvoidingView 在本机反应中使用过多的填充来推高内容的主要内容,如果未能解决你的问题,请参考以下文章

即使删除了行为,KeyboardAvoidingView 也无法在 Android 上运行

KeyboardAvoidingView + React Navigation + 安全区域视图 = 不工作

在 react native 中使用 KeyboardAvoidingView 时,整个内容都被向上推

React Native KeyboardAvoidingView 无法正常工作

KeyboardAvoidingView + ListView

在 React 本机键盘仅在 IOS 的模态上显示,在 android 中工作正常