¿Es posible obtener el tamaño (ancho y alto) de una vista determinada? Por ejemplo, tengo una vista que muestra el progreso:
<View ref='progressBar' style={{backgroundColor:'red',flex:this.state.progress}} />
Necesito saber el ancho real de la vista para alinear otras vistas correctamente. es posible?
ios
react-native
Mateo
fuente
fuente
View
diferente de acuerdo con las dimensiones. No entiendo cómo puedo usar laonLayout
función de Vista para cambiar la forma en que visualizo la Vista. ¿Eso no conduce a un bucle infinito?onLayout
no está relacionado.Esto es lo único que funcionó para mí:
fuente
Básicamente, si desea establecer el tamaño y hacer que cambie, configúrelo en un estado como este:
Puede crear muchas más variaciones de cómo debería modificarse, al usar esto en otro componente que tiene Otra vista como contenedor y crear una devolución de llamada onResponderRelease, que podría pasar la ubicación del evento táctil al estado, que luego podría pasar al componente secundario como propiedad, que podría anular el estado actualizado onLayout, colocando
{[styles.View2, this.state.view2LayoutProps, this.props.touchEventTopLeft]}
y así sucesivamente.fuente
Puede usar directamente el
Dimensions
módulo y calcular los tamaños de sus vistas. En realidad, leDimensions
dan los tamaños de las ventanas principales.Espero poder ayudarte!
Actualización : Hoy, usar nativo
StyleSheet
con Flex organizando sus vistas ayuda a escribir código limpio con soluciones de diseño elegantes en casos amplios en lugar de calcular los tamaños de sus vistas ...Si bien la creación de componentes de cuadrícula personalizados , que responden a los eventos de cambio de tamaño de la ventana principal, podría producir una buena solución en componentes de widget simples
fuente
Quizás puedas usar
measure
:fuente
NativeMethodsMixin
. No importa lo que haga,measure
siempre está indefinido. Cualquier puntero?NativeMethodsMixin
la función solo está disponible en algunos elementos. Por ejemploTouchableWithFeedback
, tiene la función de medida, pero una regularTouchable
no. Intente cambiar el tipoView
que está utilizando, obtenga la referencia y verifique si el elemento de medida está disponible. Me he tropezado con esto también.para mí, configurar las Dimensiones para usar% es lo que funcionó para mí
width:'100%'
fuente
Aquí está el código para obtener las Dimensiones de la vista completa del dispositivo.
var windowSize = Dimensions.get("window");
Úselo así:
width=windowSize.width,heigth=windowSize.width/0.565
fuente