反应导航:透明标题没有高度

时间:2019-05-28 12:20:18

标签: react-native react-navigation react-navigation-stack

如果我设置headerTransparent: true,则通常在其下方呈现的其他内容将移动到其下方。我该如何避免呢?

我的代码:

export class RegisterScreen extends Component {
  static navigationOptions = {
    title: strings.header,
    headerTitleStyle: { color: '#fff' },
    headerTintColor: '#fff',
    headerTransparent: true,
  };
  render() {
    return <Display onSignUpPressed={() => {}} onHelpPressed={() => {}} />;
  }
}

带有透明标题(它与:()重叠:

enter image description here

没有透明标题:

enter image description here

我想使内容对齐,就像标题具有高度一样。所以我希望内容像第二张图片一样,但要像第一张图片一样具有透明的标题。

5 个答案:

答案 0 :(得分:0)

我们可以在

的帮助下制作透明标题
  

headerTransparent:是

但是与此同时,我们还需要赋予headerStyle这样的标题,以使其透明。

static navigationOptions = {
headerTransparent: true,
headerStyle: { borderBottomWidth: 0 }
};

就我而言,我可以通过将这种样式赋予标题来实现。

  

style:{位置:“绝对”,backgroundColor:“透明”,zIndex:   100,顶部:0,左侧:0,右侧:0}

答案 1 :(得分:0)

您需要为屏幕组件提供与标题高度相同的顶部填充

答案 2 :(得分:0)

如果设置了headerTransparent: true,则标题与下面的内容重叠。如果您不希望重叠,则需要根据您的情况向内容手动添加上边距或填充。 React Navigation不会自动执行它,但是它提供了一个获取标题高度的钩子

import { useHeaderHeight } from '@react-navigation/stack';

现在,您可以像这样获取组件中的高度:

const headerHeight = useHeaderHeight();

答案 3 :(得分:0)

您现在可以使用 headerStyle 属性为标题提供透明背景,同时保持其高度:

static navigationOptions = {
    title: strings.header,
    headerTitleStyle: { color: '#fff' },
    headerTintColor: '#fff',
    headerStyle: { backgroundColor: 'transparent' },
  };

答案 4 :(得分:-1)

像这样将headerBackground添加到navigationOptions

static navigationOptions = {
    title: strings.header,
    headerTitleStyle: { color: '#fff' },
    headerTintColor: '#fff',
    headerTransparent: true,
    headerBackground: Platform.select({
        ios: <BlurView style={{ flex: 1 }} intensity={98} />,
        android: (
          <View style={{ flex: 1, backgroundColor: 'rgba(255,255,255,0.7)' }} />
    ),
  }),
};