Estoy creando un formulario en React Native y me gustaría hacer que mi TextInput
s 80% del ancho de la pantalla.
Con HTML y CSS normal, esto sería sencillo:
input {
display: block;
width: 80%;
margin: auto;
}
Excepto que React Native no admite la display
propiedad, los anchos de porcentaje ni los márgenes automáticos.
Entonces, ¿qué debo hacer en su lugar? Hay una cierta discusión de este problema en React seguimiento de incidencias de nativos, pero las soluciones propuestas parecen como cortes desagradables.
javascript
css
reactjs
react-native
Mark Amery
fuente
fuente
react-native
usosflex
para los tamaños y posiciones de los elementos. No estoy seguro, pero es posible queflex-basis
sea lo que necesita: verifique esto y estoflex: 0.8
puede hacer el trabajo.Respuestas:
A partir de React Native 0.42
height:
ywidth:
acepta porcentajes.Úselo
width: 80%
en sus hojas de estilo y simplemente funciona.Captura de pantalla
Ejemplo en vivo
Ancho / Alto del niño como proporción del padre
Código
fuente
Eso debería ajustarse a sus necesidades:
fuente
Si simplemente está buscando hacer la entrada relativa al ancho de la pantalla, una forma fácil sería usar Dimensiones:
He creado un proyecto de trabajo aquí . El código también está debajo.
https://rnplay.org/apps/rqQPCQ
fuente
En su StyleSheet, simplemente ponga:
en vez de:
Sigue codificando ........ :)
fuente
También puede probar react-native-extended-stylesheet que admite porcentaje para aplicaciones de orientación única:
fuente
La técnica que utilizo para tener un porcentaje de ancho del padre es agregar una vista de espaciador adicional en combinación con algo de flexbox. Esto no se aplicará a todos los escenarios, pero puede resultar muy útil.
Así que, aquí vamos:
Básicamente, la propiedad flex es el ancho relativo a la flexión "total" de todos los elementos del contenedor flexible. Entonces, si todos los elementos suman 100, tiene un porcentaje. En el ejemplo, podría haber usado valores flexibles 6 y 4 para el mismo resultado, por lo que es aún más FLEXible.
Si desea centrar la vista de ancho porcentual: agregue dos espaciadores con la mitad del ancho. Entonces, en el ejemplo sería 2-6-2.
Por supuesto, agregar las vistas adicionales no es lo mejor del mundo, pero en una aplicación del mundo real puedo imaginar que el espaciador contendrá contenido diferente.
fuente
Tengo una solución actualizada (finales de 2019), para obtener un 80% de ancho de padre Responsively con Hooks , funciona incluso si el dispositivo gira.
Puede usar
Dimensions.get('window').width
para obtener el ancho del dispositivo en este ejemplo, puede ver cómo puede hacerlo de manera receptivafuente
Esta es la forma en que obtuve la solución. Simple y dulce. Independiente de la densidad de la pantalla:
fuente
La forma más sencilla de lograrlo es aplicando ancho a la vista.
fuente