React Native'de ekran genişliği


105

React native ile ekran genişliğini nasıl elde ederim?

(Buna ihtiyacım var çünkü çakışan bazı mutlak bileşenler kullanıyorum ve ekrandaki konumları farklı cihazlarla değişiyor)

Yanıtlar:


171

React-Native'de Boyutlar adında bir Seçeneğimiz var

Görüntü, Metin ve diğer bileşenleri eklediğiniz en üst değişkene Boyutları ekleyin.

Ardından Stil Sayfalarınızda aşağıdaki gibi kullanabilirsiniz,

ex: {
width: Dimensions.get('window').width,
height: Dimensions.get('window').height
}

Bu şekilde cihaz penceresini ve yüksekliğini elde edebilirsiniz.


2 bileşen genişliğinin toplamını eşitlemek istersem bunu nasıl kullanabilirim Dimensions.get('window').width?
Andy95

Sadece bu değerleri global olarak kaydedin ve cihazınız döndürüldüğünde güvenli olmayan her yerde kullanın. Fonksiyon bileşenlerinde react kancalarını kullanmanızı tavsiye ederim
MJ Studio

77

Cihaz genişliğini almak için bu kodu bildirmeniz yeterlidir

let deviceWidth = Dimensions.get('window').width

Belli olabilir, ancak Boyutlar react-native bir içe aktarmadır

import { Dimensions } from 'react-native'

Boyutlar bu olmadan çalışmaz


11
Teşekkür ederim! Yığın taşması durumundaki insanlar, ithalatlarının çok sık geldiği yerden dışarı çıkıyor. Dahil ettiğiniz için teşekkürler, tam da ihtiyacım olan şey buydu. Resmi belgelerde yok.
Jack Davidson

23

Bileşeninizden talep edebileceğiniz bir Stil bileşeniniz varsa, dosyanın en üstünde şuna benzer bir şey olabilir:

const Dimensions = require('Dimensions');

const window = Dimensions.get('window');

Ve sonra fulscreen: {width: window.width, height: window.height},Stil bileşeninizi sağlayabilirsiniz . Bu yardımcı olur umarım


18

React Native Dimensions, bu soruya yalnızca kısmi bir cevaptır, buraya ekranın gerçek piksel boyutunu aramaya geldim ve Boyutlar aslında size yoğunluktan bağımsız düzen boyutu verir.

Ekranın gerçek piksel boyutunu elde etmek için React Yerel Piksel Oranını kullanabilirsiniz.

Hem Dimenions hem de PixelRatio için import ifadesine ihtiyacınız var

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

Genişlik ve yükseklik küreselleri oluşturmak veya diğerlerinin önerdiği gibi stil sayfalarına yerleştirmek için nesne yok etmeyi kullanabilirsiniz, ancak bunun cihaz yeniden yönlendirmesinde güncellenmeyeceğine dikkat edin.

const { width, height } = Dimensions.get('window');

React Native Dimension Belgelerinden:

Not: Boyutlar hemen kullanılabilir olsalar da, değişebilir (örneğin> cihaz dönüşü nedeniyle), bu nedenle bu sabitlere bağlı herhangi bir işleme mantığı veya stili> değerini önbelleğe almak yerine her işlemede bu işlevi çağırmaya çalışmalıdır (örneğin , bir Stil Sayfasında bir değer ayarlamak yerine satır içi stilleri kullanma).

Meraklı olanlar için PixelRatio Docs bağlantısı, ancak daha fazlası değil.

Gerçekte ekran boyutunu elde etmek için şunu kullanın:

PixelRatio.getPixelSizeForLayoutSize(width);

veya genişliğin ve yüksekliğin global olmasını istemiyorsanız, bunun gibi herhangi bir yerde kullanabilirsiniz

PixelRatio.getPixelSizeForLayoutSize(Dimensions.get('window').width);

10

React Native, "react-native" den içe aktarmamız gereken "Boyutlar" API'si ile birlikte gelir

import { Dimensions } from 'react-native';

Sonra,

<Image source={pic} style={{width: Dimensions.get('window').width, height: Dimensions.get('window').height}}></Image>

9

10 Nisan 2020 Cevap:

Önerilen yanıtın kullanılması Dimensionsartık önerilmez. Bakınız: https://reactnative.dev/docs/dimensions

Önerilen yaklaşım, useWindowDimensionsReact'te kancayı kullanmaktır ; Kanca tabanlı bir API kullanan ve ayrıca ekran değeri değiştiğinde değerinizi güncelleyen https://reactnative.dev/docs/usewindowdimensions (örneğin ekran rotasyonunda):

import {useWindowDimensions} from 'react-native';

const windowWidth = useWindowDimensions().width;
const windowHeight = useWindowDimensions().height;

Not: useWindowDimensionsyalnızca React Native 0.61.0'da mevcuttur: https://reactnative.dev/blog/2019/09/18/version-0.61


Bunu expo-web'de kullanamıyorum ama mobil
ortamda

3

Sadece iki basit adım.

  1. import { Dimensions } from 'react-native' dosyanızın üstünde.
  2. const { height } = Dimensions.get('window');

şimdi pencere ekranı yüksekliği yükseklik değişkeninde saklanır.


1
Neden aynı yanıtı verdiğinden emin değil misin? Bu gerçekten ne ekler?
Rambatino

2

react-native-responsive-screen Depo burada yeni keşfedildi . Çok kullanışlı buldum.

react-native-responsive-screen, React Native geliştiricilerinin UI öğelerini tamamen uyumlu bir şekilde kodlayabilmeleri için 2 basit yöntem sağlayan küçük bir kitaplıktır. Medya sorgusuna gerek yok.

Ayrıca, ekran yönlendirme tespiti ve yeni boyutlara göre otomatik yeniden oluşturma için isteğe bağlı üçüncü bir yöntem sağlar.


0

Sanırım kullanmanın react-native-responsive-dimensionsdavanızda size biraz daha iyi yardımcı olabileceğini düşünüyorum .

Hala alabilirsiniz:

ve kullanarak cihaz genişliği responsiveScreenWidth(100)

ve

ve kullanarak cihaz yüksekliği responsiveScreenHeight(100)

Ayrıca, genişlik ve yüksekliğin% 100'ünden fazlasını oranlayarak, kenar boşlukları ve konum değerleri belirleyerek mutlak bileşenlerinizin konumlarını daha kolay düzenleyebilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.