ReactNative之基本组件(七)

一.View

  • 一般用于容器,放子组件
  • 不能监听点击事件

二.TouchableOpacity

  • 外层包装一个TouchableOpacity,View就能实现点击
  • 实现点击后会出现透明效果,通过属性activeOpacity进行调整,0表示完全透明,1表示不透明
  • 注意:onPress与onPressIn,onPressOut,有冲突,不要同时实现
            <View style={styles.mainStyle}>
                <TouchableOpacity activeOpacity={0.7}
                                  onPress={()=>{
                                      alert('点击')
                                  }}
                                  onLongPress={()=>{
                                      alert('长按')
                                  }}
                                  onPressIn={()=>{
                                      alert('手指按下')
                                  }}
                                  onPressOut={()=>{
                                      alert('手指抬起')
                                  }}
                                  disabled={true}
                >
                    <View style={styles.redViewStyle}></View>
                </TouchableOpacity>
            </View>
  • disabled属性设置为true可以禁止组件交互

三.Text

  • 常用属性:
numberOfLines:最大行数
selectable:决定客户是否可以选中文本复制粘贴,默认false
suppressHighlighting:默认有灰色阴影,想取消就设置为true
  • 监听文字点击:onPress
               <Text numberOfLines={1}
                      selectable={true}
                      style={styles.textStyle}
                      onPress={()=>{
                          console.log('点击文本');
                      }}
                      suppressHighlighting={true}
                >
                    Hello
                </Text>
  • 常用样式属性
color:字体颜色 

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

lineHeight:行高 

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

四.Button

  • Button设置样式无效,开发中一般不用,使用text的点击事件代替
  • 常用属性:
color color :文本的颜色(iOS),或是按钮的背景色(Android)

disabled bool :设置为true时此按钮将不可点击

onPress function :用户点击此按钮时所调用的处理函数

title string :按钮内显示的文本
                <Button title="按钮"
                        color='red'
                        onPress={()=>{
                            alert('点击按钮')
                        }}
                >
                </Button>

五.TextInput

  • 默认没有边框,需要自己添加borderWidth
  • 常用属性
autoFocus:自动获取焦点, 如果为true,在componentDidMount后会获得焦点。默认为false 

blurOnSubmit: true按回车时候自动退出键盘,但必须是英文键盘

editable:文本框是否可以编辑,默认值为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') 键盘类型 

maxLength:最大字符数,显示输入文本长度 

multiline:默认文本输入框只能一行,true可多行输入

placeholder: 占位文字 

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

returnKeyType enum('done', 'go', 'next', 'search', 'send', 'none', 'previous', 'default', 'emergency-call', 'google', 'join', 'route', 'yahoo') #:决定键盘右下角按钮显示的内容 

secureTextEntry:是否安全输入,注意:多行无效果 

selectionColor:设置光标颜色 

clearButtonMode enum('never', 'while-editing', 'unless-editing', 'always') : 显示“清除”按钮 

clearTextOnFocus: 重新获取焦点后,是否清空之前的文本 

enablesReturnKeyAutomatically: 默认false。为true时,文本框内没有文字的时候,键盘禁用确认按钮。
  • 常用方法
// 清空输入框的内容
clear() 
  • 监听文本框事件
onBlur:文本框失去焦点
onChange:内容变化
onChangeText: 内容变化时调用此函数, 改变后的文字作为参数传递
onEndEditing:当文本输入结束后调用此回调函数
onFocus:当文本框获得焦点的时候调用此回调函数
onSubmitEditing:此回调函数当软键盘的确定/提交按钮被按下的时候调用此函数。如果multiline={true},此属性不可用
onKeyPress:当一个键被按下的时候调用此回调。传递给回调函数的参数为{ nativeEvent: { key: keyValue } },其中keyValue即为被按下的键。会在onChange之前调用
 <View style={styles.mainViewStyle}>
                <TextInput placeholder={'占位文字'}
                           style={styles.textStyle}
                           //multiline={true}
                           clearButtonMode="always"
                           secureTextEntry={true}
                           autoFocus={true}
                           blurOnSubmit={true}
                           selectionColor="red"
                           clearTextOnFocus="true"

                           onBlur={()=>{
                           console.log('文本框失去焦点');
                           }}
                           onChangeText={(text)=>{
                               console.log('文字改变'+text)
                           }}
                           onEndEditing={()=>{
                               console.log('文本框结束编辑');
                           }}
                           onFocus={()=>{
                               console.log('获取焦点');
                           }}
                           onSubmitEditing={()=>{
                               console.log('点击提交按钮');
                           }}
                />
            </View>

六.Image

  • 设置网络图片
  • uri加载注意:通过uri加载资源,必须设置图片尺寸,否则不显示
                <Image source={{uri:'http://img01.youxiaoshuo.com/portal/201703/21/083647y43dl1j14s8s3g99.jpg'}}
                       style={styles.imageStyle}
                />
  • 加载RN中图片
                <Image source={require('./Img/chaolan.jpeg')}
                       style={styles.imageStyle}
                />
  • 加载iOS中图片
                <Image source={{uri:'wukong'}}
                       style={styles.imageStyle}
                />
  • Image常用属性
blurRadius :图片模糊

defaultSource  {uri: string, width: number, height: number, scale: number} 
:占位图片

resizeMode enum('cover', 'contain', 'stretch', 'repeat', 'center') 
决定图片尺寸大小

cover: 在保持图片宽高比的前提下缩放图片,直到宽度和高度都大于等于容器视图的尺寸

contain: 在保持图片宽高比的前提下缩放图片,直到宽度和高度都小于等于容器视图的尺寸

stretch: 拉伸图片且不维持宽高比,直到宽高都刚好填满容器

repeat: 重复平铺图片直到填满容器。图片会维持原始尺寸。仅iOS可用

center: 居中不拉伸

  • 本地图片存放位置
    • RN项目中
    • xcode项目中
    • 可以存放到RN的安卓项目中, 放入drawable-xxhdpi文件中
      安卓的图片名称,不能以数字开头,也不能有大写字母
      自己生成drawable-xxhdpi文件夹,把图片放进去,然后把文件夹drawable-xxhdpi存放到安卓文件中res文件夹中
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350