React Native随笔——组件TextInput
一、实例
先看一下我要做的搜索框的样子

- 需要一个Image,和一个TextInput
- 去掉默认下划线 underlineColorAndroid='transparent'
- 设置光标颜色 selectionColor='#ff4f39'
- 自动获取焦点 autoFocus={true}
<View style={styles.searchBox}>
<Image source={require('../../img/search.png')} style={styles.searchImg}/>
<TextInput
underlineColorAndroid='transparent'
autoFocus={true}
placeholder='欢聚有味'
placeholderTextColor='#999'
selectionColor='#ff4f39'
style={styles.inputText}
onChangeText={(text) => this.setState({text})}
/>
</View>
样式
- 在他们的父容器设置 flexDirection: 'row',让它们横着排
- 搜索框本身带有padding,所以设置padding为0,否则height为30放不下
searchBox:{
flexDirection: 'row',
alignItems:'center',
backgroundColor:'#fff',
width:width*0.9,
borderRadius:,
height:,
},
searchImg:{
marginLeft:,
marginRight:,
},
inputText:{
width:width*0.8-,
padding:,
},
二、其他
关于TextInput的其他属性和用法,可以看这里(http://www.hangge.com/blog/cache/detail_1526.html)
1、组件的通用属性
- none:不自动变为大写
- sentences:将每句话的首字母自动改成大写
- words:将每个单词的首字母自动改成大写
- characters:将每个英文字母自动改为大写
- 要慎重使用这个属性,因为它有可能会带来屏幕显示闪烁。
- 官方更推荐使用 editable 属性和 defaultValue 属性来达到相同的效果。
- 当然如果应用需要突然改变 TextInput 组件内字符串的值,还是需要使用这个属性。
- 跨平台支持的值:done、go、next、search、send
- 仅 Android 支持的值:none、previous
- 仅 iOS 支持的值:default、google、join、route、yahoo、emergency-call
- Android、iOS 都支持的:default、numeric、email-address
- 仅支持 iOS:ascii-capable、numbers-and-punctuation、url、number-pad、phone-pad、name-phone-pad、decimal-pad、twitter、web-search
- 我们可以用来设置 TextInput 组件中被选择字符的开始与结束位置。
- 如果把开始位置与结束位置设为同一个值可以达到设置输入光标至该位置的效果。
2、组件 iOS 平台专有属性
3、组件 Android 平台专有属性
- 当为 false 时,如果手机操作系统发现 TextInput 组件的空间小,可能会让用户进入一个全屏文本输入的模式。
- 当为 true 时,操作系统的这个特性会被关闭,用户只能在 TextInput 组件中进行输入。
4、组件的方法属性
- 它的回调接收一个 event 参数,通过 event.nativeEvent.text 可以获取用户输入的字符串。
- onChangeText 回调函数与上面的 onChange 类似,但它的好处是直接可以接收用户输入的字符串。
- 它的回调接收一个 event 参数,通过 event.nativeEvent.text 可以获取用户输入的字符串。
- 它的回调接收一个 event 参数,通过 event.nativeEvent.text 可以获取用户输入的字符串。
- 它的回调接收一个 event 参数,通过 event.nativeEvent.text 可以获取组件中的字符串(上次输入的,或者是程序设定的默认值)
- 它的回调接收一个 event 参数,通过 event.nativeEvent.text 可以获取用户输入的字符串。
- 在 iOS 平台上,这个 TextInput 组件的 onSubmitEditing 事件永远也不会被触发,onSubmitEditing 回调函数也永远不会被执行。
- 在 Android 平台上,用户每一次按下回车键后,onSubmitEditing 事件都会被触发,但输入框中的字符串会增加一个回车换行,同时输入框会继续保持住焦点,不会失去焦点。
- 该回调函数会传入一个 event 参数,通过这个参数我们可以得到用户在输入框中选择一段字符串这个事件发生的时间,以及选择的子字符串在输入框中的起点位置与结束位置。
- 当用户移动输入光标时,这个事件也会被触发。比如我们将 TextInput 组件的输入光标移动到最开始位置,那么 event.nativeEvent.selection.start 和 event.nativeEvent.selection.end 的值都是 0。
(8)onKeyPress(iOS 专有):当 TextInput 组件获得焦点后,一个按键被按下时,这个回调函数将被调用并被传入按下键的键值。这个函数会在 onChange 回调函数之前被调用。
(9)onContentSizeChange:当 TextInput 组件的字符行数变化时触发该事件。因此这个回调函数只对多行 TextInput 组件有效,它的参数是一个对象,我们可以从中得到当前 TextInput 组件的新的宽与高。
(10)onScroll:在 TextInput 组件滚动时会被调用。它的参数是一个对象,我们可以从中得到组件当前滚动的位置。
(11)onSelectionChange:会在 TextInput 组件的选中字符被改变时调用。它的参数是一个对象,我们可以通过其得到用户选择的字符串。
5、组件的成员函数
this.refs.aTextInputRef.isFocused();
this.refs.aTextInputRef.clear();
React Native随笔——组件TextInput的更多相关文章
- React Native 之 组件化开发
前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会有所 ...
- React Native常用组件在Android和IOS上的不同
React Native常用组件在Android和IOS上的不同 一.Text组件在两个平台上的不同表现 1.1 height与fontSize 1.1.1只指定font,不指定height 在这种情 ...
- 从零学React Native之11 TextInput
TextInput 组件是用来通过键盘输入文字,可以使用View组件和Text组件样式,没有自己特定的样式. 与Text组件类似,TextInput组件内部的元素不再使用FlexBox布局,而采用文本 ...
- React Native的组件ListView
React Native的组件ListView类似于iOS中的UITableView和UICollectionView,也就是说React Native的组件ListView既可以实现UITableV ...
- React Native交互组件之Touchable
React Native交互组件之Touchable:只要在组件外面包一个Touchable组件就可以实现点击交互. TouchableHighlight:高亮触摸 当点击时,组件的透明度会改变,可以 ...
- 封装 React Native 原生组件(iOS / Android)
封装 React Native 原生组件(iOS / Android) 在 React Native中,有很多种丰富的组件了,例如 ScrollView.FlatList.SectionList.Bu ...
- react native 常用组件汇总
react-native-uploader //文件上传https://github.com/aroth/react-native-uploader jpush-react-native //官方版本 ...
- React Native常用组件Image使用
前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会有所 ...
- React Native 中组件的生命周期
概述 就像 Android 开发中的 View 一样,React Native(RN) 中的组件也有生命周期(Lifecycle).所谓生命周期,就是一个对象从开始生成到最后消亡所经历的状态,理解生命 ...
随机推荐
- TP3.2.3 接入银联支付
TP3.2.3 接入银联支付 项目接入银联支付的过程, 在此记录下,希望能帮助开发盆友平坑. 银联SKD链接:https://open.unionpay.com/ajweb/product/newPr ...
- 从源码角度简单看StringBuilder和StringBuffer的异同
概述 StringBuilder和StringBuffer是两个容易混淆的概念,本文从源码入手,简单看二者的异同. 容易知道的是,这两者有一个是线程安全的,而且线程安全的那个效率低. java doc ...
- iOS tableViewCell 在cell赋值、网络加载照片位置偏移大小错乱,做一个类似qq列表的tableview 更新3
更新3: 问题 加载慢!(一时间给的处理负载过大,要分散)在下载图片,判断状态后 对每个cell对图片灰置图片处理保存,影响了主线程的操作 :上拉加载时,无法上下滑动tableview 无法点击cel ...
- http中的get和post(一)
GET和POST有什么区别?及为什么网上的多数答案都是错的. 如果有人问你,GET和POST,有什么区别?你会如何回答? 我的经历 前几天有人问我这个问题.我说GET是用于获取数据的,POST,一般用 ...
- 第四节:dingo/API 最新版 V2.0 之 Responses (连载)
因为某些某些原因,不能按时更新,唉.我会尽力,加快速度.(这句话不是翻译的哈) 原文地址--> https://github.com/dingo/api/wiki/Responses A fun ...
- c#$用法
为什么会出现$符号,c#6.0才出现的新特性 var s = string.Fromat("{0}+{1}={2}",12,23,12+23) 用起来必须输入string.From ...
- BZOJ 4816 数字表格
首先是惯例的吐槽.SDOI题目名称是一个循环,题目内容也是一个循环,基本上过几年就把之前的题目换成另一个名字出出来,喜大普奔亦可赛艇.学长说考SDOI可以考出联赛分数,%%%. 下面放解题报告.并不喜 ...
- Java-单例模式详解(图文并茂,简单易懂)
PS:首先我们要先知道什么是单例,为什么要用单例,用的好处是什么等问题来看. 1:java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍两种:懒汉式单例.饿汉式单例单例模式有以下 ...
- lesson - 2 笔记 yum /single /rescue /
一. yum 作用: yum 命令是在Fedora 和RedHat 以及SUSE 中基于rpm 的软件包管理器,它可以使系统管理人员交互和自动化地更新与管理R ...
- ASP.NET Core MVC中的 [Required]与[BindRequired]
在开发ASP.NET Core MVC应用程序时,需要对控制器中的模型校验数据有效性,元数据注释(Data Annotations)是一个完美的解决方案. 元数据注释最典型例子是确保API的调用者提供 ...