É possível obter o tamanho (largura e altura) de uma determinada visualização? Por exemplo, eu tenho uma visão mostrando o progresso:
<View ref='progressBar' style={{backgroundColor:'red',flex:this.state.progress}} />
Preciso saber a largura real da visualização para alinhar outras visualizações corretamente. Isso é possível?
ios
react-native
Mateus
fonte
fonte
View
diferente, dependendo das dimensões. Não entendo como posso usar aonLayout
função do modo de exibição para alterar como exibo o modo de exibição. Isso não leva a um loop infinito?onLayout
não está relacionado.Esta é a única coisa que funcionou para mim:
fonte
Basicamente, se você deseja definir o tamanho e fazer alterações, defina-o como no layout da seguinte maneira:
Você pode criar muito mais variações de como ela deve ser modificada, usando-a em outro componente que possui Outra visualização como wrapper e crie um retorno de chamada onResponderRelease, que pode passar o local do evento de toque para o estado, que pode ser passado ao componente filho como propriedade, que pode substituir o estado atualizado onLayout, colocando
{[styles.View2, this.state.view2LayoutProps, this.props.touchEventTopLeft]}
e assim por diante.fonte
Você pode usar diretamente o
Dimensions
módulo e calcular os tamanhos das visualizações. Na verdade,Dimensions
forneça os tamanhos da janela principal.Espero ajudá-lo!
Atualização : Hoje, usando o nativo
StyleSheet
com o Flex organizando suas visualizações ajuda a escrever código limpo com soluções elegantes de layout em casos amplos, em vez de calcular o tamanho das visualizações ...Embora a construção de componentes de grade personalizados , que respondem a eventos de redimensionamento da janela principal, possam produzir uma boa solução em componentes simples do widget
fonte
Talvez você possa usar
measure
:fonte
NativeMethodsMixin
. Não importa o que eu faça,measure
é sempre indefinido. Alguma dica?NativeMethodsMixin
a função está disponível apenas em alguns elementos. Por exemploTouchableWithFeedback
, tem a função de medida, mas um regularTouchable
não. Tente alterar o tipo queView
você está usando, obtenha a ref e verifique se o elemento de medida está disponível. Eu tropecei nisso também.para mim, definir as dimensões para usar% é o que funcionou para mim
width:'100%'
fonte
Aqui está o código para obter as dimensões da visualização completa do dispositivo.
var windowSize = Dimensions.get("window");
Use-o assim:
width=windowSize.width,heigth=windowSize.width/0.565
fonte