React Navigation 6 - 自定义 header 高度

React Navigation 6 - Custom header height

我有一个自定义 header 组件:

function CustomHeader() {
    return (
       <View style={{ height: headerHeight }}>
          {/* Some buttons in a row... */}
          <View 
            style={{ 
              position: "absolute",
              alignSelf: "center",
              top: headerHeight/2
            }} 
          />
       </View>
    )
}

如您所见,我绝对将视图定位在 header 的中心,顶部为 headerHeight/2。

为了获得 header 我正在做的身高:

 import { useHeaderHeight } from "@react-navigation/elements";

 const headerHeight = useHeaderHeight();

但是...它 returns 我 0,就像我在堆栈导航器中所做的那样:

 screenOptions={{
    headerShown: false,
 }}

因为,我正在屏幕内渲染自定义 header。

我该如何解决这个问题?我需要获取 Stack Navigators 中使用的默认 headers 高度,以便对我的组件进行样式化。

useHeaderHeight 挂钩用于获取由 React Navigation 呈现的 header 的高度。

如果你只想获得默认的header高度,那么你需要使用getDefaultHeaderHeight:

import { getDefaultHeaderHeight } from '@react-navigation/elements';
import { useSafeAreaFrame, useSafeAreaInsets } from 'react-native-safe-area-context';

// ...

const MyComponent = () => {
  const frame = useSafeAreaFrame();
  const insets = useSafeAreaInsets();

  const headerHeight = getDefaultHeaderHeight(frame, false, insets.top);

  // ...

}