【发布时间】:2018-02-17 23:21:05
【问题描述】:
我正在尝试使用 RN 使 Android 底部栏(您有后退按钮的栏)高度正常工作。我做了以下事情:
Dimensions.get('window').height
我得到这个酒吧的高度!由于它可以存在或不存在,并且根据设置可以更大或更大,这对我来说是一个大问题。
【问题讨论】:
标签: react-native
我正在尝试使用 RN 使 Android 底部栏(您有后退按钮的栏)高度正常工作。我做了以下事情:
Dimensions.get('window').height
我得到这个酒吧的高度!由于它可以存在或不存在,并且根据设置可以更大或更大,这对我来说是一个大问题。
【问题讨论】:
标签: react-native
screenHeight === windowHeight;screen height === windowHeight + statusBarHeight + bottomNavigatorBarHeight ;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;
【讨论】:
windowHeight 似乎也包括 statusBarHeight - 这很令人困惑。
Dimensions.get('window').height - HEADER_HEIGHT - FOOTER_HEIGHT(其中 HEADER_HEIGHT = 400,FOOTER_HEIGHT = 200)这是较新设备(例如诺基亚 8.1 和 OnePlus6T)上屏幕高度的 100%电话)。在我使用的所有模拟器和 Galaxy S6 上,我还需要减去 statusBarHeight 以使其恰好为 100%
statusBarHeight 不再存在于 react-native 的 StatusBar 上,您需要使用 StatusBar.currentHeight。
我使用下面的表格来做到这一点:
// 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;
【讨论】:
import { Dimensions , StatusBar } from 'react-native';
const screenHeight = Dimensions.get('screen').height;
const windowHeight = Dimensions.get('window').height;
const navbarHeight = screenHeight - windowHeight + StatusBar.currentHeight;
【讨论】:
首先我们需要导入
import { Dimensions , StatusBar } from 'react-native';
WindowHeight = Dimensions.get('window').height 。
屏幕高度 = Dimensions.get('screen').height 。
StatusBarHeight = StatusBar.currentHeight
WindowHeight = ScreenHeight - NavigationBarHeight
当我们想在页面底部实现浮动按钮时,将 WindowHeight 设置为该高度并设置 bottom : StatusBar.currentHeight 为子元素。
当我们没有 NavigationBar时, WindowHeight = ScreenHeight
【讨论】:
首先在其他答案中提到,在 Android 中使用 react native Dimensions API,窗口高度 = 屏幕高度 -(状态栏高度 + 导航栏高度)
经过几个小时的调查,我发现在一些 Android 设备中,Dimensions API 给出了错误的窗口高度数。
解决方案是使用 [react-native-extra-dimensions-android][1]
[1]:https://github.com/Sunhat/react-native-extra-dimensions-android 它为您提供以下信息:
REAL_WINDOW_HEIGHT - 屏幕的实际高度,包括系统装饰元素 REAL_WINDOW_WIDTH - 屏幕的实际宽度,包括系统装饰元素 STATUS_BAR_HEIGHT - 状态栏的高度 SOFT_MENU_BAR_HEIGHT - 软菜单栏的高度(大多数新的 Android 设备都支持)
然后你可以计算窗口高度:REAL_WINDOW_HEIGHT -(STATUS_BAR_HEIGHT + SOFT_MENU_BAR_HEIGHT)
【讨论】:
对我来说这很有效
import { Dimensions} from "react-native";
const screenHeight = Dimensions.get('screen').height;
const windowHeight = Dimensions.get('window').height;
const navbarHeight = screenHeight - windowHeight
【讨论】:
如果您指的是顶部的状态栏。
根据react native docs可以使用
import { StatusBar } from 'react-native';
然后在你的代码中
StatusBar.currentHeight
更新
你可以使用这个模块react-native-extra-dimensions-android得到这个
要检测是否存在soft android nav,你可以使用这个模块react-native-detect-navbar-android。
【讨论】: