React-Native Android — как использовать getRealDimensions (Dimensions не работает)

После долгих исследований я обнаружил, что библиотека Dimensions для Android не работает должным образом. Например, каждый раз, когда я использую "Dimensions.get('window').height", я получаю разные результаты.

Это задокументировано на git:
Dimensions.get('window').height иногда неправильно на Android

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

Это ссылка на 'getRealDimensions', но она написана на java, и я понятия не имею, как реализовать это в моем проекте Android, основанном на реакции.

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

Спасибо.


person Larney    schedule 26.07.2016    source источник
comment
Это выглядит многообещающе: github.com/jaysoo/react-native-extra-dimensions- андроид   -  person Tushar Khatiwada    schedule 26.07.2016
comment
Оно делает. Я посмотрю и вернусь к вам. Спасибо   -  person Larney    schedule 26.07.2016
comment
@Tushar Khatiwada Я уже некоторое время пытаюсь заставить его работать, но безуспешно. Если вы можете помочь, не могли бы вы взглянуть на это проблема, которую я создал в Git. Спасибо.   -  person Larney    schedule 26.07.2016


Ответы (3)


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

Во-первых, реактивный 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'), см. В чем разница между "окном" и "экраном" в Dimensions API

Ваше здоровье

person poolet    schedule 05.03.2018

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

Ранее проект поддерживался пользователем GitHub Jaysoo, но теперь поддерживается пользователем GitHub Sunhat

Просто установите

npm install react-native-extra-dimensions-android --save

Возможно, вам придется перекомпилировать проект

Библиотека теперь работает!

person Larney    schedule 06.08.2016
comment
Это работает для меня. Просто обратите внимание, что вы должны зарегистрировать пакет в MainApplication.java вместо MainActivity.java. - person igorrmotta; 05.09.2016
comment
После многих тестов это на самом деле не работает. Он возвращает те же значения, что и размеры RN 0,32. - person igorrmotta; 06.09.2016
comment
У меня не работает библиотека ExtraDimension. Предоставление неверных данных измерения. Я использовал библиотеку Dimension таким образом и задал правильную ширину и высоту: const window = Dimensions.get('window'); const width = window.width * window.scale; const height = window.height * window.scale; - person Gergő Kajtár; 08.03.2017
comment
Если этот пакет не работает, вы можете открыть задачи в пакете ОРИГИНАЛ, а не в какой-то случайной вилке. - person Sunhat; 25.02.2019
comment
@Sunhat Я вижу, что ваше (?) Редактирование как анонимного пользователя было отклонено - попробуйте сделать это снова как вы, войдя в систему, возможно, с некоторой информацией о том, как проблема исправлена ​​выше по течению, и она может быть одобрена в следующий раз. - person Adam Millerchip; 26.02.2019

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

person nimgrg    schedule 27.10.2017