react-native-scrollable-tab-view

2019-07-17  本文已影响0人  努力生活的西鱼

react-native-scrollable-tab-view

加载库
npm install react-native-scrollable-tab-view --save
import ScrollableTabView from 'react-native-scrollable-tab-view';
属性
render() {
    return (
        <ScrollableTabView
            renderTabBar={() => <DefaultTabBar/>}>
            <Text tabLabel='Tab 1'>Tab 1</Text>
            <Text tabLabel='Tab 2'>Tab 2</Text>
            <Text tabLabel='Tab 3'>Tab 3</Text>
        </ScrollableTabView>
    );
}

DefaultTabBar: 自动分配水平方向的空间,空间不够时每个Tab会自动换行
ScrollableTabBar:可以超过屏幕范围,滚动可以显示

自定义TabBar
export default class HomeTabBar extends Component {

    static propTypes = {
        goToPage: PropTypes.func, // 跳转到对应tab的方法
        activeTab: PropTypes.number, // 当前被选中的tab的下标
        tabNames: PropTypes.array, // 保存tab名称
        tabIconNames: PropTypes.array // 保存tab图标
    };

    render() {
        return (
            <View style={styles.tabs}>
                {/* 遍历,系统会提供一个tab和下标,调用一个自定义的方法 */}
                {this.props.tabNames.map((tab, i) => this.renderTabOption(tab, i))}
            </View>
        );
    };

    renderTabOption = (tab, i) => {
        // 判断i是否是当前选中的tab,设置不同的颜色
        let color = this.props.activeTab === i ? mainColor : C2;
        return (
            <TouchableOpacity
                style={styles.tab}
                activeOpacity={0.7}
                onPress={() => this.props.goToPage(i)}
                key={tab === undefined ? 'tab' : tab.toString()}>

                <View style={styles.tabItem}>
                    <Icon
                        name={this.props.tabIconNames[i]}
                        size={27}
                        color={color}/>
                    <Text style={{color: color, fontSize: 12, marginTop: 1}}>
                        {this.props.tabNames[i]}
                    </Text>
                </View>

            </TouchableOpacity>
        );
    };

}
上一篇下一篇

猜你喜欢

热点阅读