Con una vista previa 1 de Android Studio 2.2 Google lanzó un nuevo diseño en su biblioteca de soporte: ConstraintLayout
. Con ConstraintLayout es más fácil usar una herramienta de diseño en Android Studio, pero no encontré una forma de usar tamaños relativos (porcentajes o 'pesos' como en LinearLayout). ¿Hay alguna manera de definir las restricciones basadas en porcentajes? Por ejemplo, ¿hacer que una vista tome el 40% de una pantalla, crear un margen del 20% entre las vistas, establecer el ancho de una vista al 50% del ancho de otra vista?
android
android-support-library
android-constraintlayout
Yury Fedorov
fuente
fuente
version 1.1
ConstraintLayout. Consulte "Dimensión porcentual" en developer.android.com/reference/android/support/constraint/… o algunas de las respuestas más recientes.Respuestas:
Actualmente puede hacer esto de varias maneras.
Una es crear pautas (haga clic con el botón derecho en el área de diseño, luego haga clic en agregar pauta vertical / horizontal). Luego puede hacer clic en el "encabezado" de la guía para cambiar el posicionamiento para que esté basado en porcentajes. Finalmente, puede restringir las vistas a pautas.
Otra forma es posicionar una vista usando sesgo (porcentaje) y luego anclar otras vistas a esa vista.
Dicho esto, hemos estado pensando en cómo ofrecer dimensiones basadas en porcentajes. No puedo hacer ninguna promesa, pero es algo que nos gustaría agregar.
fuente
app:layout_constraintGuide_percentage
Puede ser útil tener una referencia rápida aquí.
Colocación de vistas
Usar una guía de
app:layout_constraintGuide_percent
la siguiente manera:Y luego puede usar esta guía como puntos de anclaje para otras vistas.
o
Usar sesgo con
app:layout_constraintHorizontal_bias
y / oapp:layout_constraintVertical_bias
para modificar la ubicación de la vista cuando el espacio disponible lo permitaTamaño de vistas
Otro valor basado en porcentaje es la altura y / o el ancho de los elementos, con
app:layout_constraintHeight_percent
y / oapp:layout_constraintWidth_percent
:fuente
0dp
se usa en ConstraintLayout para indicar el tamaño dinámico. Ver developer.android.com/reference/android/support/constraint/…1dp
, no0dp
... es de lo que estoy hablando0dp
ya está reservado, por lo que1dp
parece sensato.A partir de "ConstraintLayout1.1.0-beta1" puede usar el porcentaje para definir anchos y alturas.
Esto definirá el ancho como el 40% del ancho de la pantalla. Una combinación de esto y pautas en porcentaje le permite crear cualquier diseño basado en porcentaje que desee.
fuente
version 1.1
ConstraintLayout. ¡El adicional_default="percent"
ya no es necesario en la versión estable! Consulte "Dimensión porcentual" en developer.android.com/reference/android/support/constraint/…sp
unidades, ¿cómo podría el tamaño del texto ser auto proporcional al tamaño de la vista (que, por sí mismo, se define proporcionalmente al tamaño total del diseño, es decir, en 'porcentaje') ?Con la nueva versión de ConstraintLayout v1.1 ahora puede hacer lo siguiente:
Esto limitará el botón para que tenga un 20% de la altura y un 65% del ancho de la vista principal.
fuente
sp
unidades, ¿cómo podría el tamaño del texto ser auto proporcional al tamaño de la vista (que, por sí mismo, se define proporcionalmente al tamaño total del diseño, es decir, en 'porcentaje') ?Cómo usar las pautas
La respuesta aceptada es poco clara sobre cómo usar las pautas y cuál es el "encabezado".
Pasos
Primero agregue una directriz.
Seleccione la línea de guía o muévala un poco para hacer visibles las restricciones.
Luego haga clic en el círculo redondo (el "encabezado") hasta que se convierta en un porcentaje. Luego puede arrastrar este porcentaje al 50% o lo que quiera.
Después de eso, puede restringir su vista a la Guía para que sea un porcentaje del padre (usando
match_constraint
en la vista).fuente
La Guía es invaluable, y la aplicación: layout_constraintGuide_percent es un gran amigo ... Sin embargo, a veces queremos porcentajes sin pautas. Ahora es posible usar pesas :
Aquí hay un ejemplo más completo que usa una guía con pesos adicionales :
fuente
Con ConstraintLayout v1.1.2, la dimensión debe establecerse en
0dp
y luego establecer los atributoslayout_constraintWidth_percent
olayout_constraintHeight_percent
en un valor entre 0 y 1 como:(No es necesario configurar
app:layout_constraintWidth_default="percent"
oapp:layout_constraintHeight_default="percent"
con ConstraintLayout 1.1.2 y las siguientes versiones)fuente
Restricción Layout 1.0 haciendo que una vista ocupe un porcentaje de la pantalla requerida haciendo dos pautas. En Restraint Layout 1.1 se ha simplificado permitiéndole restringir fácilmente cualquier vista a un porcentaje de ancho o alto.
¿No es esto fantástico? Todas las vistas admiten los atributos layout_constraintWidth_percent y layout_constraintHeight_percent. Esto hará que la restricción se fije en un porcentaje del espacio disponible. Por lo tanto, hacer que un botón o una vista de texto se expanda para llenar un porcentaje de la pantalla se puede hacer con unas pocas líneas de XML.
Por ejemplo, si desea establecer el ancho del botón al 70% de la pantalla, puede hacerlo así:
Tenga en cuenta que deberá colocar la dimensión como porcentaje a 0dp, ya que hemos especificado android: layout_width a 0dp arriba.
Del mismo modo, si desea establecer la altura del botón al 20% de la pantalla, puede hacerlo así:
¡Ver! esta vez hemos especificado android: layout_height a 0dp ya que queremos que el botón use la altura como porcentaje.
fuente
Prueba este código. Puede cambiar los porcentajes de altura y anchura con app: layout_constraintHeight_percent y app: layout_constraintWidth_percent.
Gradle:
fuente
puedes usarlo
app:layout_constraintVertical_weight
igual quelayout_weight
enlinearlayout
NOTA:
app:layout_constraintVertical_weight
(app:layout_constraintHorizontal_weight
) funcionará conandroid:layout_width="0dp"
(android:layout_height="0dp"
fuente
Para alguien que pueda resultarle útil, puede usar
layout_constraintDimensionRatio
im cualquier vista secundaria dentro deConstraintLayout
ay podemos definir el alto o el ancho de una relación de la otra dimensión (al menos uno debe ser 0dp, ya sea ancho o alto)en este caso la relación de aspecto es 16: 9
app:layout_constraintDimensionRatio="16:9"
puedes encontrar más información AQUÍfuente
Sé que esto no es directamente lo que OP estaba pidiendo originalmente, pero esto me ayudó mucho en esta situación cuando tuve una pregunta similar. Agregar esto para las personas que buscan cambiar el tamaño de la ventana de diseño (que uso regularmente), a través del código . Agregue esto a su onCreate en la actividad de la pregunta. (Lo cambia al 80%)
fuente
Simplemente, simplemente reemplace, en su etiqueta de guía
con
donde 0.7 significa 70%.
Además, si ahora intenta arrastrar pautas, el valor arrastrado ahora aparecerá en% de edad.
fuente
Con las pautas, puede cambiar la posición para que se base en porcentajes
También puedes usar de esta manera
fuente