简体   繁体   中英

React Native Tab Navigator: How to let icon overflow tabbar?

I want to let the logo center in the tarbar, and that is overflow tabbar on the top. How to do it ? ....... ...................................................................................................................................................

import React from 'react';
import TabNavigator from 'react-native-tab-navigator';
import {
  View,
  Text,
  StyleSheet,
  Image
} from 'react-native';

class App extends React.Component {
  constructor(props){
    super(props)
    this.state={
        selectedTab:'首页',
    }
  }
  render() {
    return (
      <View style={styles.container}>
        <TabNavigator tabBarStyle={styles.tabBarStyle} tabBarShadowStyle={styles.tabBarShadowStyle}>
          <TabNavigator.Item
            selected={this.state.selectedTab === '首页'}
            title="首页"
            selectedTitleStyle={styles.selectedTitleStyle}
            renderIcon={() => <Image style={styles.tabBarIcon} source={require('../../res/images/icons/home.png')}/>}
            renderSelectedIcon={() => <Image style={[styles.tabBarSelectedIcon ]} source={require('../../res/images/icons/home.png')}/>}
            onPress={() => this.setState({ selectedTab: '首页' })} >
            <Text>首页</Text>
          </TabNavigator.Item>
          <TabNavigator.Item
            selected={this.state.selectedTab === '产品'}
            title="产品"
            selectedTitleStyle={styles.selectedTitleStyle}
            renderIcon={() => <Image style={styles.tabBarIcon} source={require('../../res/images/icons/product.png')}/>}
            renderSelectedIcon={() => <Image style={[styles.tabBarSelectedIcon ]} source={require('../../res/images/icons/product.png')}/>}
            onPress={() => this.setState({ selectedTab: '产品' })} >
            <Text>产品</Text>
          </TabNavigator.Item>
          <TabNavigator.Item
            renderIcon={() => <Image style={styles.logoIcon} source={require('../../res/images/icons/logo_tab.png')}/>} >
          </TabNavigator.Item>
          <TabNavigator.Item
            selected={this.state.selectedTab === '活动'}
            title="活动"
            selectedTitleStyle={styles.selectedTitleStyle}
            renderIcon={() => <Image style={styles.tabBarIcon} source={require('../../res/images/icons/activity.png')}/>}
            renderSelectedIcon={() => <Image style={[styles.tabBarSelectedIcon ]} source={require('../../res/images/icons/activity.png')}/>}
            onPress={() => this.setState({ selectedTab: '活动' })} >
            <Text>活动</Text>
          </TabNavigator.Item>
          <TabNavigator.Item
            selected={this.state.selectedTab === '我的'}
            title="我的"
            selectedTitleStyle={styles.selectedTitleStyle}
            renderIcon={() => <Image style={styles.tabBarIcon} source={require('../../res/images/icons/profile.png')}/>}
            renderSelectedIcon={() => <Image style={[styles.tabBarSelectedIcon ]} source={require('../../res/images/icons/profile.png')}/>}
            onPress={() => this.setState({ selectedTab: '我的' })} >
            <Text>我的</Text>
          </TabNavigator.Item>
        </TabNavigator>
      </View>
    )
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1
  },
  tabBarStyle: {
    backgroundColor: '#fff',
    overflow: 'visible',
  },
  tabBarShadowStyle: {
    height: 0,
  },
  selectedTitleStyle: {
    color: '#b42325',
  },
  logoIcon: {
    zIndex: 9999,
    position: 'absolute',
    top: -50,
    left: -25,
    width: 60, height: 60,
  },
  tabBarIcon: {
    width: 26, height: 26,
    resizeMode: 'contain',
    tintColor: '#5f5f5f',
  },
  tabBarSelectedIcon: {
    width: 26, height: 26,
    resizeMode: 'contain',
    tintColor: '#b42325',
  }
});

export default App;

Current like this 在此输入图像描述

And I want to like this.. 在此输入图像描述

Use custom navigator to customize your tab view could to the trick, but it will include more effort. Here is the docs https://reactnavigation.org/docs/navigators/custom

And here is a small example https://github.com/react-community/react-navigation/blob/master/examples/NavigationPlayground/js/CustomTabs.js

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM