解决react-native软键盘弹出挡住输入框的问题

1

这是效果:

代码:

import React, {Component} from 'react';
import { View, Text, Button, StyleSheet, TextInput, ScrollView, KeyboardAvoidingView, Dimensions  } from 'react-native';
import { StackActions, NavigationActions, withNavigation } from 'react-navigation';

const {width, height} = Dimensions.get('window');
class ChangePassword extends Component {
  static navigationOptions = {
    headerStyle: {
      elevation: 0,  //去除安卓手机header的样式
    },
  };
  constructor(props) {
    super(props);
    this.state = {
      isTrue: false,
      text: '',
      text1: '',
    };
  }
  onChangeText = (text1) => {
    this.setState({
      text1
    },()=> {
      if (this.state.text1.length >= 8) {
        this.setState({
          isTrue: true
        })
      } else if (this.state.text1.length < 8) {
        this.setState({
          isTrue: false
        })
      }
    })
  }
  render() {
    return (
      <ScrollView style={styles.container}>
      <KeyboardAvoidingView behavior="position" keyboardVerticalOffset = {120} >
          <Text style={styles.title}>修改密码</Text>
          <Text style={styles.totst}>密码为8-16位,须包含数字、字母2中元素</Text>
            <TextInput
              style={styles.textinput}
              placeholder="请输入初始密码"
              placeholderTextColor = "#cccccc"
              maxLength = {16}
              value={this.state.value}
              secureTextEntry = {true}
              onChangeText={(text) => this.setState({text})}
            />
            <Text style={styles.Line}></Text>
            <TextInput
              style={styles.textinput}
              placeholder="请输入新密码"
              placeholderTextColor = "#cccccc"
              maxLength = {16}
              secureTextEntry = {true}
              onChangeText={this.onChangeText}
            />
          <Text style={styles.Line}></Text>
          {
            this.state.isTrue == true ? <Text style={styles.errorconfirm} onPress={() => {
              alert('你点击了确认,该跳转了!~')
              // this.props.navigation.navigate('ChangePassword')
            }}>确认</Text> : <Text style={styles.confirm}>确认</Text>
          }
        </KeyboardAvoidingView>
      </ScrollView>
    );
  }
}
const styles = StyleSheet.create({
  container: {
    height: height,
    padding: 16,
  },
  title: {
    color: '#4a4a4a',
    fontSize: 23,
    fontFamily: 'PingFangSC-Semibold',
  },
  totst: {
    color: '#999999',
    fontFamily: 'PingFang-SC-Medium',
    fontSize: 13,
    marginTop: 16,
  },
  Line: {
    height: 1,
    backgroundColor: '#d8d8d8',
  },
  textinput: {
    marginTop: 50,
    color: '#4a4a4a',
    fontSize: 18,
  },
  errorconfirm: {
    marginTop: 44,
    height: 44,
    lineHeight: 44,
    textAlign: 'center',
    fontSize: 16,
    color: '#ffffff',
    backgroundColor: '#25A3FF',
    borderRadius: 4,
  },
  confirm: {
    marginTop: 44,
    height: 44,
    lineHeight: 44,
    textAlign: 'center',
    fontSize: 16,
    color: '#ffffff',
    backgroundColor: '#cccccc',
    borderRadius: 4,
  }
})
export default withNavigation(ChangePassword);

有无用的代码,可自行删除,我不会弄gif的图 ,要不就配一个图了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值