react native

RN基本控件以及布局样式

2018-11-02  本文已影响164人  赵鸿伟1997

基本控件以及布局样式

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。

上一篇 下一篇

猜你喜欢

热点阅读