2016-02-16 1 views
19

Как я могу найти высоту строки состояния на Android через React Native?Как найти высоту строки состояния в Android через React Native?

Если я проверяю высоту React.Dimensions, значение, похоже, также содержит высоту строки состояния, но я пытаюсь найти высоту макета без строки состояния.

ответ

35

Вам не нужны никакие плагины для этого (больше), просто используйте StatusBar.currentHeight:

import {StatusBar} from 'react-native; 
console.log('statusBarHeight: ', StatusBar.currentHeight); 

EDIT: Видимо, это, кажется, работает на Android всегда, но на прошивке, изначально undefined действительно вернулись: (

+1

Я получил неопределенный вернулся – Arnold

+0

@Arnold Он работает в новейшей версии реагировать родной .. – Joost

+1

Для меня StatusBar.currentHeight не работает (не определенно) на прошивке на React Native 0.39.2. –

11

к сожалению, из v0.34, то API, чтобы сделать это по-прежнему противоречивы на разных платформах. StatusBarManager.HEIGHT даст вам текущую высоту в строке состояния на Android.

import { Platform, NativeModules } from 'react-native'; 
const { StatusBarManager } = NativeModules; 

const STATUSBAR_HEIGHT = Platform.OS === 'ios' ? 20 : StatusBarManager.HEIGHT; 

КСН, вы можете использовать getHeight()

StatusBarManager.getHeight((statusBarHeight)=>{ 
    console.log(statusBarHeight) 
}) 

Как примечание стороны, если вы хотите, чтобы ваше приложение рисовать под строке состояния Android аналогично поведению IOS по умолчанию, вы можете сделать это, установив пару реквизита на <StatusBar> следующим образом:

<StatusBar translucent={true} backgroundColor={'transparent'} {...props} /> 
+0

Вы сохранили мой день ... – Kim

+0

У IOS всегда 20 в статусной строке высота ?? –

+0

@ DanielJosePadillaPeña Да. Если он не скрыт, или приложение активно во время входящего вызова, в этом случае это 40 пунктов. – jmurzy