繁体   English   中英

如何使用react-navigation在React Native中创建Custom Top标签栏?

How to create Custom Top tab bar in React Native using react-navigation?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

在此处输入图片说明 我是本机反应的新手,所以我不知道如何创建“自定义”顶部标签栏,对此没有人提供帮助或参考吗?

如果我单击“天”然后渲染“天”,则TabBar输出应该是这样的;如果我单击“周”,则渲染一周的那部分。 提前致谢

1 个回复

您可以找到许多教程来创建自定义标签栏。 使用createMaterialTopTabNavigator创建顶部栏。

import { createMaterialTopTabNavigator, createAppContainer } from "react-navigation"
import TabBar from './TabBar'

const TabNavigator = createMaterialTopTabNavigator({
  feed: {
    screen: () => null,
  },
  profile: {
    screen: () => null,
  },
  inbox: {
    screen: () => null,
  }
}, {
  tabBarComponent: TabBar,
})

export default createAppContainer(TabNavigator)

TabBar组合

import * as React from "react"
import { View } from "react-native"
import Tab from './Tab'

const TabBar = (props) => {
  const { navigationState, navigation, position } = props
  return (
    <View style={{
      height: 80,
      backgroundColor: 'seashell',
      flexDirection: "row",
      justifyContent: 'space-around',
      alignItems: 'center',
    }}>
    {navigationState.routes.map((route, index) => {
      const focusAnim = position.interpolate({
        inputRange: [index - 1, index, index + 1],
        outputRange: [0, 1, 0]
      })
      return (
        <Tab 
          focusAnim={focusAnim}
          title={route.routeName} 
          onPress={() => navigation.navigate(route.routeName)}
        />
      )
    })}
    </View>
  )
}

export default TabBar

标签组件

import * as React from "react"
import { Animated, TouchableOpacity } from "react-native"

const Tab = ({ focusAnim, title, onPress }) => {
  return (
    <TouchableOpacity onPress={onPress}>
      <Animated.View
        style={{
          padding: 10,
          borderRadius: 10,
          backgroundColor: focusAnim.interpolate({
            inputRange: [0, 1],
            outputRange: ["transparent", "tomato"]
          })
        }}
      >
        <Animated.Text
          style={{
            color: focusAnim.interpolate({
              inputRange: [0, 1],
              outputRange: ["#444", "#fff"]
            })
          }}
        >{title}</Animated.Text>
      </Animated.View>
    </TouchableOpacity>
  )
}

export default Tab

您需要做的是根据您的需要对其进行样式设置。

1 如何使用react-navigation在react-native中添加搜索栏和选项卡按钮

我有一个登录屏幕,当用户登录时,他们被带到类似于上图所示的屏幕。 在此屏幕中,我有一个tabNavigator,其中包含5个屏幕的标签,类似于上图所示。 它还有一个带有搜索栏的标题。 仅应在5个标签中的4个中显示此标题,并且我需要在第5个标签中显示一个不同的标题。 有没有办 ...

3 如何在 React Native 中创建自定义顶部导航栏

嗨,我正在用 React Native 构建一个应用程序,我想要一个自定义的标签栏。 我已经尝试过使用 React 导航,但我不知道如何按照我想要的方式设置样式... 这就是我希望它最终的样子: 信息页面 照片页面 通过反应导航,我可以滑动屏幕并转到其他页面。 所以这是非常好的可用性,我想保留( ...

7 如何使用react-navigation在react-native中设置带有导航栏的背景图像

我必须实现以下输出: 我取得的成就 这是我的源代码: 我使用了图像背景,然后在该模块上设置了标题组件。 在这里,我设置了 ImageBackground height: 185, width: '100%',这是错误的方式,它不是对所有设备都响应。 我也使用 windows.heig ...

9 如何将自定义屏幕参数传递给react-navigation中的自定义选项卡栏

有人可以帮我一些嵌套在标签逻辑中的堆栈。 我有一个自定义标签栏,我想为每个堆栈发送额外的道具,像图标等。 我目前的代码 我希望实现类似的目标 在某种程度上,我可以在我的标签栏中看到它。 要清楚,我想要发送的属性只适用于堆栈的根目录(整个堆栈,而不是堆栈中的各个屏幕) ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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