一、实例

  先看一下我要做的搜索框的样子

  • 需要一个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、组件的通用属性

(1)autoCapitalize:首字母自动大写。可选值有:none、sentences、words、characters。
  • none:不自动变为大写
  • sentences:将每句话的首字母自动改成大写
  • words:将每个单词的首字母自动改成大写
  • characters:将每个英文字母自动改为大写
 
(2)placeholder:占位符,在输入前显示的文本内容。
 
(3)value:用来设置 TextInput 组件内字符串的值。
  • 要慎重使用这个属性,因为它有可能会带来屏幕显示闪烁。
  • 官方更推荐使用 editable 属性和 defaultValue 属性来达到相同的效果。
  • 当然如果应用需要突然改变 TextInput 组件内字符串的值,还是需要使用这个属性。
 
(4)placeholderTextColor:占位符文本的颜色。
 
(5)password:如果为 true,表示密码输入框。文本显示为“*”
 
(6)multiline:如果为 true,表示多行输入。
 
(7)editable:默认为 true。如果设置为 false 表示不可编辑。
 
(8)autoFocus:如果为 true,则自动获取焦点。
 
(9)maxLength:能够输入的最长字符数。
 
(10)returnKeyType:表示软键盘返回键显示的字符串。可选值如下:
  • 跨平台支持的值:done、go、next、search、send
  • 仅 Android 支持的值:none、previous
  • 仅 iOS 支持的值:default、google、join、route、yahoo、emergency-call
 
(11)keyboardType:定义了当 TextInput 组件获得焦点时,将自动弹出哪种软键盘。可选值如下:
  • 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
 
(12)secureTextEntry:默认为 false。如果为 true,则像密码框一样隐藏输入内容。
 
(13)autoCorrect:如果为 true,则会自动更正用户输入的英文单词是否正确。(默认值:true)
 
(14)blurOnSubmit:如果为 true,在输入框输入完成提交是,文本区域会被模糊化。它的默认值是 TextInput 组件 multiline 属性的非值。如果一个 TextInput 组件的 multiline 属性与 blurOnSubmit 都为 true 时,用户按下键盘上的回车键会模糊化输入的文本并触发 onSubmitEditing 事件,而不是在输入区域插入新行。
 
(15)defaultValue:用来定义 TextInput 组件中的字符串默认值。
 
(16)selectTextOnFocus:当它为 true 时,如果 TextInput 组件获得焦点,则组件中所有的文字都会被选中。
 
(17)selection:这个是一个对象类型的属性。它接受的对象结构为:
  • 我们可以用来设置 TextInput 组件中被选择字符的开始与结束位置。
  • 如果把开始位置与结束位置设为同一个值可以达到设置输入光标至该位置的效果。
 
(18)selectionColor:用来设置被选中文字的高亮显示颜色。在 iOS 平台,还可以使用这个属性设置输入光标的颜色。

2、组件 iOS 平台专有属性

(1)clearButtonMode:表示什么时候会显示清除按钮。可选值有:never、while-editing、unless-editing、always。
 
(2)clearTextOnFocus:如果为 true,当用户点击 TextInput 组件开始编辑文字时,会自动清除文字区域。
 
(3)enablesReturnKeyAutomatically:默认为 false。设置为 true 表示没有输入文本时返回键无法使用。
 
(4)keyboardAppearance:设置不同的键盘颜色。可选值有:default、light、dark,分别表示默认、明亮、偏暗。
 

3、组件 Android 平台专有属性

(1)numberOfLines:用来设置 TextInput 组件可以有多少行。
 
(2)disableFullscreenUI:是否开启全屏文本输入模式。默认为 false。
  • 当为 false 时,如果手机操作系统发现 TextInput 组件的空间小,可能会让用户进入一个全屏文本输入的模式。
  • 当为 true 时,操作系统的这个特性会被关闭,用户只能在 TextInput 组件中进行输入。
 
(3)inlineImageLeft:它必须是 RN 的 Android 工程中的一个图片资源的名称。RN 将会把这张图片无缩放地显示在 TextInput 组件的左侧。
 
(4)inlineImagePadding:它定义了 inlineImage(如果有的话)的 padding 与 TextInput 组件自己的 padding。
 
(5)returnKeyLabel:使用这个属性可以将手机软键盘的回车键设为指定的字符串。这个属性的优先级高于 returnKeyType。
 
(6)underlineColorAndroid:用来定义输入提示下划线的颜色。如果将它的颜色设为与 TextInput 组件的背景色一样,即可以隐藏输入提示下划线。

4、组件的方法属性

(1)onChange:当文本发生变化时,调用该函数。
  • 它的回调接收一个 event 参数,通过 event.nativeEvent.text 可以获取用户输入的字符串。
 
(2)onChangeText:当文本发生变化时,调用该函数。
  • onChangeText 回调函数与上面的 onChange 类似,但它的好处是直接可以接收用户输入的字符串。
 
(3)onEndEditing:当结束编辑时,调用该函数。
  • 它的回调接收一个 event 参数,通过 event.nativeEvent.text 可以获取用户输入的字符串。
 
(4)onBlur:失去焦点时触发(在 onEndEditing 之后)。
  • 它的回调接收一个 event 参数,通过 event.nativeEvent.text 可以获取用户输入的字符串。
 
(5)onFocus:获得焦点时触发。
  • 它的回调接收一个 event 参数,通过 event.nativeEvent.text 可以获取组件中的字符串(上次输入的,或者是程序设定的默认值)
 
(6)onSubmitEditing:当结束编辑后,点击键盘的提交按钮触发该事件。
  • 它的回调接收一个 event 参数,通过 event.nativeEvent.text 可以获取用户输入的字符串。
当我们通过 multiline={true} 将一个 TextInput 组件设置为多行时,要注意:

  • 在 iOS 平台上,这个 TextInput 组件的 onSubmitEditing 事件永远也不会被触发,onSubmitEditing 回调函数也永远不会被执行。
  • 在 Android 平台上,用户每一次按下回车键后,onSubmitEditing 事件都会被触发,但输入框中的字符串会增加一个回车换行,同时输入框会继续保持住焦点,不会失去焦点。
 
(7)onSelectionChange:当用户在文本输入框中选择的字符串发生改变时触发。
  • 该回调函数会传入一个 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、组件的成员函数

(1)isFocused()
当得到一个 TextInput 组件的引用后,通过这个方法可以判断当前这个 TextInput 组件是否获得焦点。
this.refs.aTextInputRef.isFocused();
(2)clear()
当得到一个 TextInput 组件的引用后,通过这个方法可以将 TextInput 组件中的字符串清空。

this.refs.aTextInputRef.clear();

React Native随笔——组件TextInput的更多相关文章

  1. React Native 之 组件化开发

    前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会有所 ...

  2. React Native常用组件在Android和IOS上的不同

    React Native常用组件在Android和IOS上的不同 一.Text组件在两个平台上的不同表现 1.1 height与fontSize 1.1.1只指定font,不指定height 在这种情 ...

  3. 从零学React Native之11 TextInput

    TextInput 组件是用来通过键盘输入文字,可以使用View组件和Text组件样式,没有自己特定的样式. 与Text组件类似,TextInput组件内部的元素不再使用FlexBox布局,而采用文本 ...

  4. React Native的组件ListView

    React Native的组件ListView类似于iOS中的UITableView和UICollectionView,也就是说React Native的组件ListView既可以实现UITableV ...

  5. React Native交互组件之Touchable

    React Native交互组件之Touchable:只要在组件外面包一个Touchable组件就可以实现点击交互. TouchableHighlight:高亮触摸 当点击时,组件的透明度会改变,可以 ...

  6. 封装 React Native 原生组件(iOS / Android)

    封装 React Native 原生组件(iOS / Android) 在 React Native中,有很多种丰富的组件了,例如 ScrollView.FlatList.SectionList.Bu ...

  7. react native 常用组件汇总

    react-native-uploader //文件上传https://github.com/aroth/react-native-uploader jpush-react-native //官方版本 ...

  8. React Native常用组件Image使用

    前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会有所 ...

  9. React Native 中组件的生命周期

    概述 就像 Android 开发中的 View 一样,React Native(RN) 中的组件也有生命周期(Lifecycle).所谓生命周期,就是一个对象从开始生成到最后消亡所经历的状态,理解生命 ...

随机推荐

  1. Python 项目实践一(外星人入侵小游戏)第三篇

    今天是圣诞节,公司放假一天,趁着有空,学习了一下午,多写一篇博客吧! 接着上节的继续学习, 一 重构:模块game_functions 在大型项目中,经常需要在添加新代码前重构既有代码.重构旨在简化既 ...

  2. js、jquery实现模糊搜索功能

    模糊搜索功能在工作中应用广泛,并且很实用,自己写了一个方法,以后用到的时候可以直接拿来用了! 实现的搜索功能: 1. 可以匹配输入的字符串找出列表中匹配的项,列表框的高度跟随搜索出的列表项的多少改变 ...

  3. mysql查询进程、导入数据包大小设置

    mysql查询进程.导入数据包大小设置 zoerywzhou@163.com http://www.cnblogs.com/swje/ 作者:Zhouwan 2017-12-27 查询正在执行的进程: ...

  4. java与数据库

    工具:mysql: java eclipse,phpstudy. 以MySQL为例 java连接MySQL可能你在度娘的帮助下,又设置环境变量又改这改那的,结果还是没有连接成功. 今天我来分享一下不需 ...

  5. 栈和队列数据结构的相互实现[LeetCode]

    栈是先进后出,队列是先进后出,这里讨论一下两种数据结构之间的相互实现. 一.用两个栈实现队列 我们用一个栈来实现队列的进队操作(栈A),用另一个栈来实现队列的出队操作(栈B). 1.入队列: 把元素放 ...

  6. Jmeter+Ant+Jenkins接口自动化测试(二)_测试方案设计及jmeter脚本开发

    前言 根据之前部署好的测试环境,进行接口自动化测试的方案设计及Jmeter脚本开发.测试方案设计过程中采用了数据分离和对象分离等思路,因此直接通过特定的测试用例文档来驱动整个自动化接口测试的执行,相关 ...

  7. 1、opencv-2.4.7.2的安装和vs2010的配置

    参考大牛们的资料,动手操作了一遍,不算太复杂,和vs2008不同,有几点需要注意,cv2.4.7.2版本没有vc9,所以无法在2008上使用(呵呵,我瞎猜的) 1.下载安装 下载http://sour ...

  8. RedisPool操作Redis,工具类实例

    redis.properties 配置文件内容 redis.pool.maxActive=100redis.pool.maxIdle=20redis.pool.maxWait=3000redis.po ...

  9. 自动删除文件脚本(Linux shell脚本)

    每天在/home/face/capturepic/2017/目录下都会产生很多文件 /home/face/capturepic/2017/4/21 /home/face/capturepic/2017 ...

  10. js解析xml浏览器兼容性处理

    /****************************************************************************** 说明:xml解析类 ********** ...