《React-Native系列》RN组件之Text和TextInput以及注意要点

本文主要是介绍《React-Native系列》RN组件之Text和TextInput以及注意要点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天把写的RN程序从iOS上迁移到Android上,发现了一些问题,主要涉及到Text和TextInput这两个组件,所以用一节来专门记录下来。

Text组件

我们先来看官网给的例子:
[javascript]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. renderText: function() {  
  2.   return (  
  3.     <Text style={styles.baseText}>  
  4.       <Text style={styles.titleText} onPress={this.onPressTitle}>  
  5.         {this.state.titleText + '\n\n'}  
  6.       </Text>  
  7.       <Text numberOfLines={5}>  
  8.         {this.state.bodyText}  
  9.       </Text>  
  10.     </Text>  
  11.   );  
  12. },  
  13. ...  
  14. var styles = StyleSheet.create({  
  15.   baseText: {  
  16.     fontFamily: 'Cochin',  
  17.   },  
  18.   titleText: {  
  19.     fontSize: 20,  
  20.     fontWeight: 'bold',  
  21.   },  
  22. };  

属性

ios allowFontScaling bool 
控制字体是否要根据iOS的“文本大小”辅助选项来进行缩放。

numberOfLines number 
用来当文本过长的时候裁剪文本。包括折叠产生的换行在内,总的行数不会超过这个属性的限制。

onLayout function 
当挂载或者布局变化以后调用,参数为如下的内容:{nativeEvent: {layout: {x, y, width, height}}}

onPress function 
当文本被点击以后调用此回调函数。

样式

color string

fontFamily string

fontSize number

fontStyle enum('normal', 'italic')

fontWeight enum("normal", 'bold', '100', '200', '300', '400', '500', '600', '700', '800', '900')
指定字体的粗细。大多数字体都支持'normal'和'bold'值。并非所有字体都支持所有的数字值。如果某个值不支持,则会自动选择最接近的值。

letterSpacing number

lineHeight number

textAlign enum("auto", 'left', 'right', 'center', 'justify')
指定文本的对齐方式。其中'justify'值仅iOS支持。

androidtextAlignVertical enum('auto', 'top', 'bottom', 'center')

ios letterSpacing number

ios textDecorationColor string

textDecorationLine enum("none", 'underline', 'line-through', 'underline line-through')

ios textDecorationStyle enum("solid", 'double', 'dotted', 'dashed')

ios  writingDirection enum("auto", 'ltr', 'rtl')

testID string 
用来在端到端测试中标记这个视图。

ios  suppressHighlighting bool 
当为true时,如果文本被按下,则没有任何视觉效果。默认情况下,文本被按下时会有一个灰色的、椭圆形的高光。


注意点:
1、在使用Text的过程中,实现文本垂直居中、水平居中的效果(iOS和Android通用)
[javascript]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. <View  style={styles.textView}>  
  2.     <Text style={styles.text}> 水平垂直居中</Text>  
  3. </View>  
  4.   
  5. textView:{  
  6.   flexDirection:'column',  
  7.   justifyContent:'center',  
  8.   alignItems:'center',  
  9. }  
  10.   
  11. text:{  
  12.     fontSize:12,  
  13.     color:'#f2f2f2',  
  14. }  

尽量用view去包裹一层Text组件,text组件只负责基础的文字样式,View组件负责对齐方式等。

2、在Android平台上,Text组件里使用paddingLeft 属性,不好使,直接顶着View了。
解决方式:1)将paddingLeft放在View属性上
2)将paddingLeft修改为marginLeft
建议使用第一种方案修改,把对齐方式交给view去处理,Text只负责文本属性的显示。

TextInput组件

我们也来看看官网的api。
[javascript]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. <TextInput  
  2.    style={{height: 40, borderColor: 'gray', borderWidth: 1}}  
  3.    onChangeText={(text) => this.setState({text})}  
  4.    value={this.state.text}  
  5.  />  

属性:


autoCapitalize enum('none', 'sentences', 'words', 'characters') 
控制TextInput是否要自动将特定字符切换为大写:
characters: 所有的字符。
words: 每个单词的第一个字符。
sentences: 每句话的第一个字符(默认)。
none: 不自动切换任何字符为大写。

autoCorrect bool 
如果为false,会关闭拼写自动修正。默认值是true。

autoFocus bool 
如果为true,在componentDidMount后会获得焦点。默认值为false。

blurOnSubmit bool 
如果为true,文本框会在提交的时候失焦。对于单行输入框默认值为true,多行则为false。注意:对于多行输入框来说,如果将blurOnSubmit设为true,则在按下回车键时就会失去焦点同时触发onSubmitEditing事件,而不会换行。

defaultValue string 
提供一个文本框中的初始值。当用户开始输入的时候,值就可以改变。在一些简单的使用情形下,如果你不想用监听消息然后更新value属性的方法来保持属性和状态同步的时候,就可以用defaultValue来代替。

editable bool 
如果为false,文本框是不可编辑的。默认值为true。

keyboardType enum("default", 'numeric', 'email-address', "ascii-capable", 'numbers-and-punctuation', 'url', 'number-pad', 'phone-pad', 'name-phone-pad', 'decimal-pad', 'twitter', 'web-search') 
决定弹出的何种软键盘的,譬如numeric(纯数字键盘)。这些值在所有平台都可用:
default
numeric
email-address

maxLength number 
限制文本框中最多的字符数。使用这个属性而不用JS逻辑去实现,可以避免闪烁的现象。

multiline bool 
如果为true,文本框中可以输入多行文字。默认值为false。

onBlur function 
当文本框失去焦点的时候调用此回调函数。

onChange function 
当文本框内容变化时调用此回调函数。

onChangeText function 
当文本框内容变化时调用此回调函数。改变后的文字内容会作为参数传递。

onEndEditing function 
当文本输入结束后调用此回调函数。

onFocus function 
当文本框获得焦点的时候调用此回调函数。

onLayout function 
当组件挂载或者布局变化的时候调用,参数为{x, y, width, height}。

onSubmitEditing function 
此回调函数当软键盘的确定/提交按钮被按下的时候调用此函数。如果multiline={true},此属性不可用。

placeholder string 
如果没有任何文字输入,会显示此字符串。

placeholderTextColor string 
占位字符串显示的文字颜色。

secureTextEntry bool 
如果为true,文本框会遮住之前输入的文字,这样类似密码之类的敏感文字可以更加安全。默认值为false。

selectTextOnFocus bool 
如果为true,当获得焦点的时候,所有的文字都会被选中。

selectionColor string 
设置输入框高亮时的颜色(在iOS上还包括光标)

style Text#style 
译注:这意味着本组件继承了所有Text的样式。

value string 
文本框中的文字内容。
TextInput是一个受约束的(Controlled)的组件,意味着如果提供了value属性,原生值会被强制与value属性保持一致。在大部分情况下这都工作的很好,不过有些情况下会导致一些闪烁现象——一个常见的原因就是通过不改变value来阻止用户进行编辑。如果你希望阻止用户输入,可以考虑设置editable={false};如果你是希望限制输入的长度,可以考虑设置maxLength属性,这两个属性都不会导致闪烁。


ios   clearButtonMode enum('never', 'while-editing', 'unless-editing', 'always') 
是否要在文本框右侧显示“清除”按钮。

ios    clearTextOnFocus bool 
如果为true,每次开始输入的时候都会清除文本框的内容。

ios    enablesReturnKeyAutomatically bool 
如果为true,键盘会在文本框内没有文字的时候禁用确认按钮。默认值为false。

ios    keyboardAppearance enum('default', 'light', 'dark') 
指定键盘的颜色。

ios   onKeyPress function 
当一个键被按下的时候调用此回调。被按下的键会作为参数传递给回调函数。会在onChange之前调用。

ios    returnKeyType enum('default', 'go', 'google', 'join', 'next', 'route', 'search', 'send', 'yahoo', 'done', 'emergency-call')
决定“确定”按钮显示的内容。

ios    selectionState DocumentSelectionState 
参见DocumentSelectionState.js,可以控制一个文档中哪段文字被选中的状态。

android  numberOfLines number 
设置输入框的行数。当multiline设置为true时使用它,可以占据对应的行数。

android  underlineColorAndroid string 
文本框的下划线颜色(译注: 如果要去掉文本框的边框,请将此属性设为透明transparent)。


注意点:
1、在使用TextInput的过程中,在Android平台下,输入框下有个横线,此时需要将属性underlineColorAndroid  设置为 transparent来解决。
2、常用的TextInput是作为文本域,譬如最多输入50个字符。
此时需要设置   multiline ={true}
maxLength ={50}

感觉Text和TextInput组件在Android上的问题比较多,遇到一个解决一个吧。

这篇关于《React-Native系列》RN组件之Text和TextInput以及注意要点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/510350

相关文章

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

HTML中meta标签的常见使用案例(示例详解)

《HTML中meta标签的常见使用案例(示例详解)》HTMLmeta标签用于提供文档元数据,涵盖字符编码、SEO优化、社交媒体集成、移动设备适配、浏览器控制及安全隐私设置,优化页面显示与搜索引擎索引... 目录html中meta标签的常见使用案例一、基础功能二、搜索引擎优化(seo)三、社交媒体集成四、移动

HTML input 标签示例详解

《HTMLinput标签示例详解》input标签主要用于接收用户的输入,随type属性值的不同,变换其具体功能,本文通过实例图文并茂的形式给大家介绍HTMLinput标签,感兴趣的朋友一... 目录通用属性输入框单行文本输入框 text密码输入框 password数字输入框 number电子邮件输入编程框

HTML img标签和超链接标签详细介绍

《HTMLimg标签和超链接标签详细介绍》:本文主要介绍了HTML中img标签的使用,包括src属性(指定图片路径)、相对/绝对路径区别、alt替代文本、title提示、宽高控制及边框设置等,详细内容请阅读本文,希望能对你有所帮助... 目录img 标签src 属性alt 属性title 属性width/h

CSS3打造的现代交互式登录界面详细实现过程

《CSS3打造的现代交互式登录界面详细实现过程》本文介绍CSS3和jQuery在登录界面设计中的应用,涵盖动画、选择器、自定义字体及盒模型技术,提升界面美观与交互性,同时优化性能和可访问性,感兴趣的朋... 目录1. css3用户登录界面设计概述1.1 用户界面设计的重要性1.2 CSS3的新特性与优势1.

HTML5 中的<button>标签用法和特征

《HTML5中的<button>标签用法和特征》在HTML5中,button标签用于定义一个可点击的按钮,它是创建交互式网页的重要元素之一,本文将深入解析HTML5中的button标签,详细介绍其属... 目录引言<button> 标签的基本用法<button> 标签的属性typevaluedisabled

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,

CSS place-items: center解析与用法详解

《CSSplace-items:center解析与用法详解》place-items:center;是一个强大的CSS简写属性,用于同时控制网格(Grid)和弹性盒(Flexbox)... place-items: center; 是一个强大的 css 简写属性,用于同时控制 网格(Grid) 和 弹性盒(F

CSS实现元素撑满剩余空间的五种方法

《CSS实现元素撑满剩余空间的五种方法》在日常开发中,我们经常需要让某个元素占据容器的剩余空间,本文将介绍5种不同的方法来实现这个需求,并分析各种方法的优缺点,感兴趣的朋友一起看看吧... css实现元素撑满剩余空间的5种方法 在日常开发中,我们经常需要让某个元素占据容器的剩余空间。这是一个常见的布局需求