博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[React Native]高度自增长的TextInput组件
阅读量:6484 次
发布时间:2019-06-23

本文共 1915 字,大约阅读时间需要 6 分钟。

之前我们学习了了解了TextInput相关的属性。

在开发中,我们有时候有这样的需求, 希望输入区域的高度随着输入内容的长度而增长, 如下:

这时候我们需要自定义一个组件: 在项目中创建AutoExpandingTextInput.js

import React, {Component} from 'react';import {AppRegistry, TextInput, StyleSheet} from 'react-native';export default class AutoExpandingTextInput extends Component {    // 构造    constructor(props) {        super(props);        // 初始状态        this.state = {            text: '',            height: 0        };        this.onChange = this.onChange.bind(this);    }    onChange(event) {        console.log(event.nativeEvent);        this.setState({            text: event.nativeEvent.text,            height:event.nativeEvent.contentSize.height        });    }    onContentSizeChange(params){        console.log(params);    }    render() {        return (            
); }}const styles = StyleSheet.create({ textInputStyle: { //文本输入组件样式 width: 300, height: 30, fontSize: 20, paddingTop: 0, paddingBottom: 0, backgroundColor: "grey" }});复制代码

在多行输入(multiline={true})的时候,可以通过onChange回调函数,获取内容的高度event.nativeEvent.contentSize.height,然后修改内容的高度。

接下来修改index.ios.js或者index.android.js 如下:

import AutoExpandingTextInput from './AutoExpandingTextInput';class AwesomeProject extends Component {    _onChangeText(newText) {        console.log('inputed text:' + newText);    }    render() {        return (            
); }}const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: '#F5FCFF', borderWidth: 1, justifyContent: 'center', alignItems: 'center' }, textInputStyle: { //文本输入组件样式 width: 300, height: 50, fontSize: 20, paddingTop: 0, paddingBottom: 0, backgroundColor: "grey" }});复制代码

当然我们知道在IOS端TextInput/Text组件默认不会水平居中的,需要在外层额外嵌套一层View,可以参考 运行结果:

更多精彩请关注微信公众账号likeDev,公众账号名称:爱上Android。

转载地址:http://rgiuo.baihongyu.com/

你可能感兴趣的文章
一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之用户管理(4)...
查看>>
一、WINDOWS下 RabbitMQ安装部署
查看>>
Photoshop给河边婚片加上唯美的霞光
查看>>
魔方心得-20180227
查看>>
(转载)关于ubuntu下java环境配置及其运行
查看>>
.Net的GC垃圾回收机制 为什么要有GC?
查看>>
逻辑运算、作用域问题、DOM
查看>>
JAVA数据结构
查看>>
C#手动回收内存的简单方法
查看>>
ftp服务安装和配置
查看>>
2017 NOIp 初赛体验
查看>>
第 1 章 虚拟化 - 007 - KVM 存储虚拟化
查看>>
IE6里面子集尺寸大的会把父亲撑大
查看>>
GP开发示例:数据库去重
查看>>
LR-web_submint_form和 web_submint_data
查看>>
Jquery鼠标滚动到页面底部自动加载更多内容,使用分页
查看>>
多线程总结四:线程同步(一)
查看>>
Pro Aspnet MVC 4读书笔记(3) - Essential Language Features
查看>>
better-scroll 遇到的问题 1
查看>>
User Agent注入攻击及防御
查看>>