如何在react-navigation标题下隐藏阴影?

时间:2017-03-10 03:35:23

标签: react-native react-navigation

如何在react-navigation标题下隐藏阴影?
他们看起来像这样 enter image description here

14 个答案:

答案 0 :(得分:12)

将以下内容添加到navigationOptions标题样式。

const AppNavigation = StackNavigator(
  {
    'The First Screen!': { screen: FirstScreen },
  },
  {
    navigationOptions: {
      header: {
        style: {
          elevation: 0, // remove shadow on Android
          shadowOpacity: 0, // remove shadow on iOS
        },
      },
    },
  },
);

文档还不是很好,但您可以在React Navigation Docs中了解navigationOptions。

答案 1 :(得分:8)

以下适用于我,原始样式表使用"borderBottomWidth" on iOS

const navigator = StackNavigator(screens, {
  navigationOptions: {
    headerStyle: {
      elevation: 0,
      shadowOpacity: 0,
      borderBottomWidth: 0,
    }
  }
});

答案 2 :(得分:3)

这对我有用:

export const AppNavigator = StackNavigator(
    {
      Login: { screen: LoginScreen },
      Main: { screen: MainScreen },
      Profile: { screen: ProfileScreen },
    },
    navigationOptions: {
        headerStyle: {
            elevation: 0,
            shadowOpacity: 0,
        }
    }
);

export const AppNavigator = StackNavigator(
    {
      Login: { screen: LoginScreen },
      Main: { screen: MainScreen },
      Profile: { screen: ProfileScreen },
    },
    header: {
        style: {
            elevation: 0, //remove shadow on Android
            shadowOpacity: 0, //remove shadow on iOS
        }
    }
);

答案 3 :(得分:3)

在反应导航版本5.x.x中:

      <Tab.Navigator
        tabBarOptions={{
          activeTintColor: colors.darkGray,
          labelStyle: { fontSize: 12 },
          style: { backgroundColor: colors.white, borderTopWidth: 0, elevation: 0, shadowOpacity: 0, },
        }}
      >

答案 4 :(得分:3)

在v5中,您可以执行以下操作

<Stack.Navigator>
      <Stack.Screen
        name="Example"
        component={ExampleComponent}
        options={{
          headerStyle: {
            elevation: 0,
            shadowOpacity: 0
          },
        }}
      />
</Stack.Navigator>

答案 5 :(得分:2)

尝试传递cardStyle: { shadowColor: 'transparent' }

export const AppNavigator = StackNavigator(
{
  Login: { screen: LoginScreen },
  Main: { screen: MainScreen },
  Profile: { screen: ProfileScreen },
},
cardStyle: { shadowColor: 'transparent' }

根据这个问题React Navigation Stack Navigator default shadow styling

答案 6 :(得分:2)

我不知道这个答案有多重要,但是分享我的代码以告诉您,该代码对反应导航版本:3.9.1

const AppNavigation = StackNavigator(
{
  FirstScreen,
},
{
 defaultNavigationOptions: {
  headerStyle: {
    elevation: 0, //for android
    shadowOpacity: 0, //for ios
    borderBottomWidth: 0, //for ios
  },
},
})

答案 7 :(得分:2)

在反应导航V5中,您如何执行此操作: 在所有屏幕上做到这一点,将com.companyName.X.NotificationServiceExtension属性应用到screenOptions

例如:

<Stack.Navigator>

要针对特定​​屏幕执行此操作,请将 <Stack.Navigator screenOptions={{ headerStyle: { elevation: 0, shadowOpacity: 0 }, }} /> </Stack.Navigator> 道具应用于options

例如:

<Stack.Screen>

答案 8 :(得分:1)

过去几个小时我一直试图解决这个问题,并最终找到了解决方案。 我的问题是,标题与其他组件的Z位置不同。

尝试:

const styles = {
  headerStyle: {
    zIndex: 1
  }
}

答案 9 :(得分:1)

截至2019年,此答案在版本3中无效。

新方法是:

$('#fullpage').fullpage();

答案 10 :(得分:1)

我正在使用React Navigation v5,我使用以下代码:

 const HomeStackScreen = ({navigation}) => (
  <HomeStack.Navigator
    initialRouteName="Home"
    headerMode="screen"
    mode="modal"
    screenOptions={{
      headerStyle: {
        backgroundColor: COLORS.WHITE,
        elevation: 0, // remove shadow on Android
        shadowOpacity: 0, // remove shadow on iOS
        borderBottomWidth: 0,
      },
      headerTintColor: COLORS.GREY,
      headerTitleStyle: {
        fontFamily: 'Montserrat-SemiBold',
        fontWeight: '600',
        fontSize: 18,
      },
    }}>
    <HomeStack.Screen
      name="Home"
      component={Home}
      options={{
        title: 'Expanded',
        headerLeft: () => <RenderHeaderLeft />,
        headerRight: () => <RenderHeaderRight navigation={navigation} />,
        headerTitleAlign: 'left',
      }}
    />
    <HomeStack.Screen name="HomeDetails" component={HomeDetails} />
  </HomeStack.Navigator>
);

在headerStyle内放置shadowOpacity和高程

答案 11 :(得分:0)

你可以试试这个,它对我有用!

export const SignedOut = StackNavigator({
  SignIn: {
    screen: SignInScreen,
    navigationOptions: {
      title: "SignIn",
      headerStyle: {
        shadowOpacity: 0, // This is for ios
        elevation: 0 // This is for android
      }
    }
  }
});

答案 12 :(得分:0)

阴影是通过高程实现的,请使用:

 headerStyle: {
     backgroundColor: 'white',
     shadowColor: 'transparent',
     elevation: 0,
 },

答案 13 :(得分:-2)

对于 React Native Navigation 5

<Stack.Screen
      name={"Profile"}
      component={Profile}
      options={{
        headerTitle: "Profile",
        headerHideShadow: true,
      }}
    />

<Stack.Navigator
    screenOptions={{
      headerHideShadow: true,
    }}
  >