Android导航栏高度React-Native

Skï*_*kïp 7 react-native

我正试图通过RN获得Android底部栏(我称之为导航栏,你有后退键).因为当我这样做时:

Dimensions.get('window').height
Run Code Online (Sandbox Code Playgroud)

我用这个酒吧得到了高度!因为它可以或不可以在那里,并且可以根据设置更大或更大,这对我来说是个大问题.

简单的问题,我找不到答案..
谢谢!

RY_*_*eng 27

  • 在IOS设备,screenHeight === windowHeight;
  • 在带有底部导航栏的 Android 设备中,screen height === windowHeight + statusBarHeight + bottomNavigatorBarHeight ;
  • 在没有底部导航栏的 Android 设备中,bottomNavigatorBarHeight为零。
import {Dimensions, StatusBar} from 'react-native'; 

const SCREEN_HEIGHT = Dimensions.get('screen').height; // device height
const STATUS_BAR_HEIGHT = StatusBar.currentHeight || 24; 
const WINDOW_HEIGHT = Dimensions.get('window').height;

Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

  • 我发现 Android 上的情况似乎略有不同。较新版本的 Android 这似乎是正确的,较旧版本的“windowHeight”似乎也包括“statusBarHeight”——这非常令人困惑。 (3认同)

小智 9

import { Dimensions , StatusBar } from 'react-native';

const screenHeight = Dimensions.get('screen').height;
const windowHeight = Dimensions.get('window').height;
const navbarHeight = screenHeight - windowHeight + StatusBar.currentHeight;
Run Code Online (Sandbox Code Playgroud)

  • 对我来说,这报告的高度与隐藏的栏可见时的高度相同? (4认同)

wkm*_*wkm 6

我使用下面的工作表来做到这一点:

// RN version:0.57.0
let deviceH = Dimensions.get('screen').height;
// the value returned does not include the bottom navigation bar, I am not sure why yours does.
let windowH = Dimensions.get('window').height;
let bottomNavBarH = deviceH - windowH;
Run Code Online (Sandbox Code Playgroud)


Moh*_*lil -3

如果您指的是顶部的状态栏。

根据反应本机文档,您可以使用

import { StatusBar } from 'react-native';
Run Code Online (Sandbox Code Playgroud)

然后在你的代码中

StatusBar.currentHeight
Run Code Online (Sandbox Code Playgroud)

更新

您可以使用此模块react-native-extra-dimensions-android来获得它

要检测软 android 导航是否存在,您可以使用此模块react-native-detect-navbar-android

  • OP 谈论的是屏幕导航栏,带有后退按钮和主页按钮,而不是状态栏。 (6认同)