Estoy usando ConstraintLayout
en mi aplicación para hacer el diseño de las aplicaciones. Estoy tratando de crear una pantalla cada una EditText
y Button
debería estar en el centro y Button
debería estar debajo de EditText
con un margen Superior solo 16dp.
Aquí está mi diseño y captura de pantalla de cómo se ve en este momento.
activity_authenticate_content.xml
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="16dp"
android:paddingRight="16dp"
tools:context="com.icici.iciciappathon.login.AuthenticationActivity">
<android.support.design.widget.TextInputLayout
android:id="@+id/client_id_input_layout"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
<android.support.design.widget.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/login_client_id"
android:inputType="textEmailAddress" />
</android.support.design.widget.TextInputLayout>
<android.support.v7.widget.AppCompatButton
android:id="@+id/authenticate"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/login_auth"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="@id/client_id_input_layout"
app:layout_constraintRight_toRightOf="@id/client_id_input_layout"
app:layout_constraintTop_toTopOf="@id/client_id_input_layout" />
</android.support.constraint.ConstraintLayout>
<android.support.constraint.Guideline
. ¿Necesitamos usar cada vez que usamosConstraintLayout
?layout_constraintGuide_percent
?Guideline
es solo un elemento invisible en el que puedes anclar tus vistas.layout_constraintGuide_percent
es el porcentaje en el padre. Aquí 0.5 es 50% de alturaTextInputEditText
y unoButton
. Quiero colocarlos en un centro de pantalla. Pero a partir de ahora no es pastebin.com/iXYtuXHg aquí está la captura de pantalla dropbox.com/s/k7997q2buvw76cp/q.png?dl=0LinearLayout
y centrarlo.Hay una manera más simple. Si establece restricciones de diseño de la siguiente manera y su EditText tiene un tamaño fijo, se centrará en el diseño de restricción:
El par izquierdo / derecho centra la vista horizontalmente y el par superior / inferior la centra verticalmente. Esto se debe a que cuando establece las restricciones izquierda, derecha o superior e inferior más grandes que la vista, la vista se centra entre las dos restricciones, es decir, el sesgo se establece en 50%. También puede mover la vista hacia arriba / abajo o hacia la derecha / izquierda configurando el sesgo usted mismo. Juegue un poco y verá cómo afecta la posición de las vistas.
fuente
app:layout_constraintCenter_in="parent"
Estaría mucho mejor. Pero como siempre Google no lo proporcionó.La solución con guía funciona solo para este caso particular con EditText de una sola línea. Para que funcione para EditText multilínea, debe usar una cadena "empaquetada".
Así es como se ve:
Puedes leer más sobre el uso de cadenas en las siguientes publicaciones:
fuente
Puede centrar una vista como un porcentaje del tamaño de la pantalla.
Este ejemplo usa 50% de ancho y alto:
Esto se hizo usando ConstraintLayout versión 1.1.3. No olvide agregarlo a sus dependencias en el gradle, y aumente la versión si hay una nueva versión disponible:
fuente
agregue estas etiquetas en su vista
y puede hacer clic derecho en el modo de diseño y elegir el centro.
fuente
puede usar layout_constraintCircle para la vista central dentro de ConstraintLayout.
con restricciónCircle to parent y zero radius puede hacer que su vista sea el centro de la matriz.
fuente