react-native tab标签

现在,我们的app中一般都要有底部导航栏的存在,但react-native并没有给我们提供原生的实现,github上有大神实现了相关模块(https://github.com/expo/react-native-tab-navigator),使用起来非常方便。
首先,我们要切换到我们的工程目录下面:
这里写图片描述
运行 npm install react-native-tab-navigator –save
下载成功后会有下面的提示:
这里写图片描述
此时我们打开我们项目的package.json文件,在dependencies下面就会有我们刚刚下载的 react-native-tab-navigator 模块。
这里写图片描述
至此,我们已经成功将react-native-tab-navigator 添加到了我们的项目中。
代码中,首先我们要从 react-native-tab-navigator 引入TabNavigator:

import TabNavigator from 'react-native-tab-navigator'

然后我们就可以使用TabNavigator:

<TabNavigator tabBarStyle={{backgroundColor:'#f8f8f8'}} style={{backgroundColor: '#f8f8f8'}}>
                    <TabNavigator.Item
                        title="首页"
                        selected={this.state.selectedTab==='home'}
                        titleStyle={{color:'#6d797e'}}
                        selectedTitleStle={{color:'#00a9f2'}}
                        renderIcon={()=><Image source={require('./res/home_default.png')} style={styles.tabIcon}/>}
                        renderSelectedIcon={()=><Image source={require('./res/home_selected.png')}style={styles.tabIcon}/>}
                        onPress={()=>this.setState({selectedTab:'home'})}
                    >
                    <HomeScene
                    navigator={this.props.navigator}
                    route={this.props.route}
                    />
                    </TabNavigator.Item>
                    <TabNavigator.Item
                        title="消息"
                        selected={this.state.selectedTab==='message'}
                        titleStyle={{color:'#6d797e'}}
                        selectedTitleStle={{color:'#00a9f2'}}
                        renderIcon={()=><Image source={require('./res/message_default.png')} style={styles.tabIcon}/>}
                        renderSelectedIcon={()=><Image source={require('./res/message_selected.png')} style={styles.tabIcon}/>}
                        onPress={()=>this.setState({selectedTab:'message'})}
                    >
                        <MessageScene
                            navigator={this.props.navigator}
                            route={this.props.route}
                        />
                    </TabNavigator.Item>
                    <TabNavigator.Item
                        title="通讯录"
                        selected={this.state.selectedTab==='contact'}
                        titleStyle={{color:'#6d797e'}}
                        selectedTitleStle={{color:'#00a9f2'}}
                        renderIcon={()=><Image source={require('./res/contact_default.png')} style={styles.tabIcon}/>}
                        renderSelectedIcon={()=><Image source={require('./res/contact_selected.png')} style={styles.tabIcon}/>}
                        onPress={()=>this.setState({selectedTab:'contact'})}
                    >
                        <ContactScene
                            navigator={this.props.navigator}
                            route={this.props.route}
                        />
                    </TabNavigator.Item>
                    <TabNavigator.Item
                        title="发现"
                        selected={this.state.selectedTab==='find'}
                        titleStyle={{color:'#6d797e'}}
                        selectedTitleStle={{color:'#00a9f2'}}
                        renderIcon={()=><Image source={require('./res/find_default.png')} style={styles.tabIcon}/>}
                        renderSelectedIcon={()=><Image source={require('./res/find_selected.png')} style={styles.tabIcon}/>}
                        onPress={()=>this.setState({selectedTab:'find'})}
                    >
                        <FindScene
                            navigator={this.props.navigator}
                            route={this.props.route}
                        />
                    </TabNavigator.Item>
                    <TabNavigator.Item
                        title="我的"
                        selected={this.state.selectedTab==='mine'}
                        titleStyle={{color:'#6d797e'}}
                        selectedTitleStle={{color:'#00a9f2'}}
                        renderIcon={()=><Image source={require('./res/mine_default.png')} style={styles.tabIcon}/>}
                        renderSelectedIcon={()=><Image source={require('./res/mine_selected.png')} style={styles.tabIcon}/>}
                        onPress={()=>this.setState({selectedTab:'mine'})}
                    >
                        <MineScene
                            navigator={this.props.navigator}
                            route={this.props.route}
                        />
                    </TabNavigator.Item>
                </TabNavigator>
  • TabNavigator.Item 代表一个tab标签,中间组件是当前标签对应的页面。
  • tabBarStyle 标签栏的样式
  • title tab标签的标题
  • selected 布尔值判断当前标签是否选中
  • titleStyle 标题未选中时的样式
  • selectedTitleStle 标题选中时的样式
  • renderIcon 未选中时的icon
  • renderSelectedIcon 选中时的icon
  • onPress 点击时间监听

截图如下:
这里写图片描述

源码

React Native中可以使用第三方库`react-native-scrollable-tab-view`来实现滑动标题栏。以下是一个简单的示例代码: ```tsx import * as React from 'react'; import { StyleSheet, Text, View } from 'react-native'; import ScrollableTabView, { DefaultTabBar } from 'react-native-scrollable-tab-view'; type Props = {}; const FirstTabScreen = () => { return ( <View style={styles.container}> <Text>First Tab</Text> </View> ); }; const SecondTabScreen = () => { return ( <View style={styles.container}> <Text>Second Tab</Text> </View> ); }; const ScrollableTabNavigator = (props: Props) => { return ( <ScrollableTabView renderTabBar={() => <DefaultTabBar />} tabBarUnderlineStyle={styles.tabBarUnderline} tabBarBackgroundColor="#FFFFFF" tabBarActiveTextColor="#000000" tabBarInactiveTextColor="#999999" > <FirstTabScreen tabLabel="Tab 1" /> <SecondTabScreen tabLabel="Tab 2" /> </ScrollableTabView> ); }; export default ScrollableTabNavigator; const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', alignItems: 'center', }, tabBarUnderline: { backgroundColor: '#000000', height: 2, }, }); ``` 在这个示例中,我们首先导入了`react-native-scrollable-tab-view`库中的`ScrollableTabView`和`DefaultTabBar`组件。然后,我们创建了两个Tab项组件`FirstTabScreen`和`SecondTabScreen`,每个组件中都有一个`tabLabel`属性,用于设置Tab标签。最后,我们使用`ScrollableTabView`组件来包含Tab项,并设置了一些Tab导航的样式属性,例如`tabBarUnderlineStyle`、`tabBarBackgroundColor`、`tabBarActiveTextColor`和`tabBarInactiveTextColor`。在`renderTabBar`属性中,我们使用了`DefaultTabBar`组件来渲染Tab导航栏。 注意:`react-native-scrollable-tab-view`库已经很久没有更新了,建议使用`react-native-tab-view`等其他替代库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值