2016-07-26 4 views
3

После долгих исследований я обнаружил, что библиотека Dimensions для Android не работает так, как предполагается. Например, каждый раз, когда я использую «Dimensions.get (« window »). Height», я получаю разные результаты.React-Native Android - Как использовать getRealDimensions (размеры не работают)

Это отражено на мерзавца:
Dimensions.get('window').height is sometimes wrong on Android

Решение заключается в использовании «getRealDimensions» библиотеку, как указано по ссылке мерзавца выше.

Это the link to the 'getRealDimensions', но написано в java, и я понятия не имею, как реализовать его в своем андроидном проекте с реакцией.

Резюме
Как я могу реализовать библиотеку «getRealDimensions» в мой среагировать родной андроида проекта?

Спасибо.

+0

Это выглядит многообещающим: https://github.com/jaysoo/react-native-extra- размеры-андроид –

+0

Он делает. Я посмотрю и вернусь к тебе. Спасибо – Larney

+0

@Tushar Khatiwada Я пытался заставить его работать какое-то время, но не повезло. Если бы вы были в состоянии помочь, не могли бы вы взглянуть на это [вопрос, который я создал на Git.] (Https://github.com/jaysoo/react-native-extra-dimensions-android/issues/13) Спасибо. – Larney

ответ

2

Для тех, у кого такая же проблема, вот решение. Реальное решение - библиотека react-native-extra-dimensions-android.

Проблема в том, что библиотека react-native-extra-dimensions-android не работает с версиями React-Native выше 0.29.

Какой-то чувак под названием BelinChung разветвил репозиторий git с реакцией «native-native-extra-dimension-android» и исправил проблему.

Это ссылка на рабочий репозиторий ==> (https://github.com/BelinChung/react-native-extra-dimensions-android)

То, что вы должны сделать, это, в файле «package.json», замените номер версии «реагировать родной-экстра- размеры-андроид»с приведенным выше ссылкой на рабочем репозиторий, например так:
enter image description here

Тогда деинсталлировать„реагируют неместные-экстру-размеров-андроид“:

npm uninstall react-native-extra-dimensions-android 

заново -install:

npm install 

Библиотека в настоящее время работает!

+0

Это работает для меня. Просто обратите внимание, что вам необходимо зарегистрировать пакет в MainApplication.java вместо MainActivity.java – igorrmotta

+0

После многих тестов это фактически не работает. Он возвращает те же значения, что и размеры RN 0.32 – igorrmotta

+0

Он по-прежнему работает для меня по сей день ... – Larney

0

Имеет ту же проблему, решил обойти это, обновив хранилище Redux с правильными размерами изнутри в режиме просмотра onlayout, который, как представляется, дает правильную ширину и высоту каждый раз, а также позволяет уменьшить повторное отображение представлений если нужно. Не видели эту проблему в последней версии native 0.49.0.

0

Для тех, кто все еще борется с этой проблемой, вот небольшая проницательность, которую я могу дать.

Первый API-интерфейс, реагирующий на реакцию (0.54), кажется стабильным для Android, вызов Dimensions.get('window') возвращает одинаковое значение каждый раз (по крайней мере, из того, что я видел). На Android, однако, height, возвращенный этим вызовом, представляет собой экран со строкой состояния (то есть панель в верхней части экрана с иконкой Wi-Fi и уведомлениями).

Во-вторых, если вы хотите получить только высоту экрана без мягкой панели меню, просто вызовите StatusBar.currentHeight и вычтите это значение с высоты, заданной Dimensions.get('window').height.

Этот метод довольно прост и позволяет избежать зависимости от другой упаковки (хотя react-native-extra-dimensions-android действительно хорош).

Наконец, если вам нужен общий размер экрана взглянуть на Dimensions.get('screen') см What's the difference between 'window' and 'screen' in the Dimensions API

Приветствия