RN基本控件以及布局样式

基本控件以及布局样式

View

    View是一个支持Flexbox布局、样式、一些触摸处理、和一些无障碍功能的容器,

    并且它可以放到其它的视图里,也可以有任意多个任意类型的子视图

    <View style={{flexDirection: 'row', height: 100, padding: 20}}>

        <View style={{backgroundColor: 'blue', flex: 0.3}} />

        <View style={{backgroundColor: 'red', flex: 0.5}} />

    </View>

Text

    显示文本的React组件,并且它也支持嵌套、样式,以及触摸处理

    <Text style={styles.titleText} onPress={this.onPressTitle}> {this.state.titleText} </Text>

Image:

    不同类型图片的React组件,包括网络图片、本地资源

    <Image style={styles.icon} source={require('./icon.png')} />  同级

    <Image style={styles.icon} source={require('./img/icon.png')} />  下级

    <Image style={styles.icon} source={require('./../icon.png')} />  上级

    <Image style={styles.icon} source={require('./../img/icon.png')} />  同级文件夹

    <Image style={styles.logo} source={{uri: 'http://facebook.github.io/react/img/logo_og.png'}} />

TextInput

    输入文本的基础组件。

    onChangeText的属性,此属性接受一个函数,而此函数会在文本变化时被调用。

    onSubmitEditing的属性,会在文本被提交后(用户按下软键盘上的提交键)调用

    <TextInput

        style={{height: 40}}

        placeholder="Type here to translate!"

        onChangeText={(text) => this.setState({text})} />

    <Text

    style={{padding: 10, fontSize: 42}}>

        {this.state.text}

    </Text>

Button:

    显示一个简单的按钮

    是一个简单的跨平台的按钮组件。

    <Button

        onPress={() => {

            Alert.alert("你点击了按钮!");

        }}

        title="点我!"

        color="#841584"

    />

Touchable系列组件:

    TouchableHighlight来制作按钮或者链接。注意此组件的背景会在用户手指按下时变暗。

    在Android 上还可以使用TouchableNativeFeedback,它会在用户手指按下时形成类似墨水涟漪的视觉效果。

    TouchableOpacity会在用户手指按下时降低按钮的透明度,而不会改变背景的颜色。

    如果你想在处理点击事件的同时不显示任何视觉反馈,则需要使用TouchableWithoutFeedback。

    <TouchableHighlight

        onPress={this._onPressButton} //点击响应

        onLongPress={this._onLongPressButton} //长按响应

        underlayColor="white"

    >

        <View style={styles.button}>

            <Text style={styles.buttonText}>TouchableHighlight</Text>

        </View>

    </TouchableHighlight>

//--------------------------------------------------------------------------------------------------   

样式:

    style的属性;驼峰命名法,例如将background-color改为backgroundColor

    还可以传入一个数组——在数组中位置居后的样式对象比居前的优先级更高,间接实现样式的继承

    使用StyleSheet.create来集中定义组件的样式

    <View>

        <Text style={styles.red}>just red</Text>

        <Text style={styles.bigblue}>just bigblue</Text>

        <Text style={[styles.bigblue, styles.red]}>bigblue, then red</Text>

        <Text style={[styles.red, styles.bigblue]}>red, then bigblue</Text>

    </View>

    const styles = StyleSheet.create({

        bigblue: { color: 'blue', fontWeight: 'bold', fontSize: 30, },

        red: { color: 'red', },

    });

    关于样式

    (1)普通内联样式:{{}},第一层{}是表达式,第二层{}是js对象;

                      <View style={{fontSize:40, width:80,}}> </View>

    (2)调用样式表:{样式类.属性}

                      <View style={styles.container}></View>

    (3)样式表和内联样式共存:{[]}

                      <View style={[styles.container, {fontSize:40, width:80}]}>

    (4)多个样式表:{[样式类1, 样式类2]}

                     <View style={[styles.container, styles.color]}>

弹性布局Flexbox

    Flex布局主要思想是:让容器有能力让其子项目能够改变其宽度、高度(甚至是顺序),以最佳方式填充可用空间

    容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴;默认值是竖直轴(column)方向

    在React Native中,有4个容器属性,2个项目属性,分别是:

        容器属性:flexDirection   flexWrap   justifyContent  alignItems

        项目属性:flex  alignSelf

    flexDirection容器属性: `row | row-reverse | column | column-reverse`

        该属性决定主轴的方向(即项目的排列方向)。

        row:主轴为水平方向,起点在左端。

        row-reverse:主轴为水平方向,起点在右端。

        column(默认值):主轴为垂直方向,起点在上沿。

        column-reverse:主轴为垂直方向,起点在下沿。

    flexWrap容器属性: `nowrap | wrap | wrap-reverse`

        默认情况下,项目都排在一条线(又称"轴线")上。flex-wrap属性定义,如果一条轴线排不下,如何换行。

        nowrap(默认值):不换行

        wrap:换行,第一行在上方

        wrap-reverse:换行,第一行在下方。(和wrap相反)

    justifyContent容器属性:`flex-start | flex-end | center | space-between | space-around`

        定义了伸缩项目在主轴线的对齐方式

        flex-start(默认值):伸缩项目向一行的起始位置靠齐。

        flex-end:伸缩项目向一行的结束位置靠齐。

        center:伸缩项目向一行的中间位置靠齐。

        space-between:两端对齐,项目之间的间隔都相等。

        space-around:伸缩项目会平均地分布在行里,两端保留一半的空间。

    alignItems容器属性:`flex-start | flex-end | center | baseline | stretch`

        定义项目在交叉轴上如何对齐,可以把其想像成侧轴(垂直于主轴)的“对齐方式”。

        flex-start:交叉轴的起点对齐。

        flex-end:交叉轴的终点对齐 。

        center:交叉轴的中点对齐。

        baseline:项目的第一行文字的基线对齐。

        stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。

    flex项目属性:

    “flex-grow”、“flex-shrink”和“flex-basis”三个属性的缩写,

    其中第二个和第三个参数(flex-shrink、flex-basis)是可选参数。默认值为“0 1 auto”。

    自身相对于父容器的权重占比

    alignSelf项目属性:

    “auto | flex-start | flex-end | center | baseline | stretch”

    align-self属性交叉轴允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。

    默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。

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

推荐阅读更多精彩内容