美文网首页
React-Native SegmentedControlIOS

React-Native SegmentedControlIOS

作者: 煎包小混沌 | 来源:发表于2017-07-28 10:56 被阅读0次

SegmentedControlIOS这是一个分段显示多个选项的组件

效果:

3F72C4D2-0748-4FC4-B668-91CC1A2DBD1A.png

属性:

values:按顺序每一个段落的标题文字
selectedIndex:组件显示时,一开始被选中的段落的下标
onValueChange:当用户点击某一段的时候调用,返回参数是被选中段的值(也就是values中的值)
onChange:当用户点击某一段的时候调用,参数是一个事件对象
tintColor:被选中的段的颜色,包含外边框的颜色
momentary:如果为true,选中的段不会一直保持选中的特效,但onValueChange回调还是会正常工作
enabled:如果为false,用户不能与此控件交互。默认为true

创建一个SegmentedControlIOS

<SegmentedControlIOS  values={['one', 'two']}/>

完整事例:

import React, { Component } from 'react';
import {
    AppRegistry,
    StyleSheet,
    SegmentedControlIOS,
    View,
    Text
} from 'react-native';
class SegmentedView_1 extends Component {
    render(){
        return(
            <View style={styles.subView}>
                <Text>第二个SegmentedControlIOS设置momentary为true,表示没有选中状态</Text>
                <SegmentedControlIOS style={styles.segmented}
                                     values={['one', 'two']}/>
                <SegmentedControlIOS style={styles.segmented}
                                     values={['One', 'Two', 'Three', 'Four', 'Five']}
                                     momentary={true}/>
            </View>
        )
    }
}
class SegmentedView_2 extends Component {
    constructor(props){
        super(props);
        this.state={
            selectedIndex: 0,
            value: 'aaa'
        }
    }
    _onChange =(event)=> {
        this.setState({
            selectedIndex: event.nativeEvent.selectedSegmentIndex,
        });
    };
    _onValueChange =(value)=> {
        console.log('_onValueChange' + value);
        this.setState({
            value: value,
        });
    };
    render(){
        return(
            <View style={styles.subView}>
                <Text>修改选择颜色,添加调用的onChange和onValueChange</Text>
                <SegmentedControlIOS style={styles.segmented}
                                     values={['one', 'two', 'Three', 'Four']}
                                     selectedIndex={0}
                                     tintColor={'#fa0a0f'}/>
                <SegmentedControlIOS style={styles.segmented}
                                     values={['one', 'two', 'Three', 'Four']}
                                     selectedIndex={this.state.selectedIndex}
                                     onChange={this._onChange}
                                     onValueChange={this._onValueChange}/>
                <Text style={styles.text}>
                    选择的value: {this.state.value} 当前选择的位置:{this.state.selectedIndex}
                </Text>
            </View>
        )
    }
}
class SegmentedView_3 extends Component {
    render(){
        return(
            <View style={styles.subView}>
                <Text>设置了enabled属性为false</Text>
                <SegmentedControlIOS style={styles.segmented}
                                     values={['one', 'two', 'Three', 'Four']}
                                     enabled={false}
                                     selectedIndex={2}
                                     tintColor={'#1affa1'}/>
            </View>
        )
    }
}
export default class RNSegmentedView extends Component {
    render(){
        return(
            <View style={styles.mainView}>
                <SegmentedView_1/>
                <SegmentedView_2/>
                <SegmentedView_3/>
            </View>
        )
    }
}
const styles = StyleSheet.create({
    mainView: {
        flex: 1,
        backgroundColor: '#aaaaaa',
        alignItems: 'center'
    },
    subView: {
        backgroundColor: '#ffffff',
        alignItems: 'center',
        marginTop: 40,
        width: 320,
        padding: 10,
        borderRadius: 5
    },
    segmented: {
        width: 280,
        marginTop: 20
    },
    text: {
        marginTop: 20,
    }
});
AppRegistry.registerComponent('RNSegmentedView', ()=>RNSegmentedView);

相关文章

网友评论

      本文标题:React-Native SegmentedControlIOS

      本文链接:https://www.haomeiwen.com/subject/yvexlxtx.html