1.2.1 • Published 9 years ago

segmentedcontrol v1.2.1

Weekly downloads
3
License
ISC
Repository
github
Last release
9 years ago

segmentedControl

#Works on Android and IOS in React Native

A wrapper for SegmentedControlIOS so all props work the same. For Android all props work except disabled seems to require a re-render and momentary hasn't been programmed.

####If you would like to use Android style tabs in iOS, use the 'override' prop.

##PropTypes and Default Prop Types for Android ####JUST Android. iOS is unaffected.

SegmentedControl.propTypes = {
    values: React.PropTypes.arrayOf(React.PropTypes.string).isRequired
    , tintColor: React.PropTypes.string
    , enabled: React.PropTypes.bool
    , onChange: React.PropTypes.func
    , onValueChange: React.PropTypes.func
    , androidTint: React.PropTypes.string   //Android Specific, overrides tintColor
    , height: React.PropTypes.number        //Android Specific
};

SegmentedControl.defaultProps = {
    height: 38
    , enabled: true
    , tintColor: 'black' 
};

alt text

##Example:

class TestSegmentControl extends Component {
    constructor(p) {
        super(p);
        this.state = {
            selectedIndex: 0
            , values: [ "Dogs", "Cats", "Birds" ]
            , value: null
        }
    }

    onChange(event) {
        this.setState({ selectedIndex: event.nativeEvent.selectedSegmentIndex });
    }

    onValueChange(value) {
        this.setState({value})
    }

    render() {
        let text;

        switch(this.state.selectedIndex) {
            case 0 :
                text = "Woof";
                break;
            case 1 :
                text = "Meow";
                break;
            case 3:
                text = "Tweet";
                break;
            default:
                text = "This is awkward";

        }
        return (
            <View style={styles.container}>
                <SegmentedControl values={this.state.values}
                                  onChange={this.onChange.bind(this)}
                                  onValueChange={this.onValueChange.bind(this)}
                                  tintColor={'orange'} 
                                  androidTint={'red'} //overrides tintColor in Android so Android is red and iOS is orange
                                  selectedIndex={this.state.selectedIndex}/>
                <Text style={styles.welcome}>
                    {text}
                </Text>
                <Text style={styles.instructions}>
                    {this.state.value}
                </Text>
            </View>
        );

    }
}

const styles = StyleSheet.create({
    container: {
        flex: 1
        , marginTop: 20
        , backgroundColor: '#F5FCFF'
    }
    , welcome: {
        fontSize: 20
        , textAlign: 'center'
        , margin: 10
    }
    , instructions: {
        textAlign: 'center'
        , color: '#333333'
        , marginBottom: 5
    }
});
1.2.1

9 years ago

1.2.0

10 years ago

1.1.5

10 years ago

1.1.4

10 years ago

1.1.2

10 years ago

1.1.0

10 years ago

1.0.3

10 years ago

1.0.1

10 years ago

1.0.0

10 years ago