Esta vista no está restringida verticalmente. En tiempo de ejecución, saltará a la izquierda a menos que agregue una restricción vertical


99

ingrese la descripción de la imagen aquíEl nuevo editor de diseño en Android Studio 2.2 sigue mostrando este error en vistas como EditText y Buttons. amablemente ayuda Además, se agradecería cualquier enlace que ayude en la incorporación con el nuevo diseño de restricción.

código:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    android:id="@+id/activity_main"
    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"
    tools:context="com.set.email.MainActivity"
    tools:layout_editor_absoluteX="0dp"
    tools:layout_editor_absoluteY="81dp">

    <TextView
        android:text="To:"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:layout_editor_absoluteX="7dp"
        tools:layout_editor_absoluteY="4dp"
        android:id="@+id/textTo"/>

    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="textEmailAddress"
        android:ems="10"
        tools:layout_editor_absoluteX="0dp"
        tools:layout_editor_absoluteY="24dp"
        android:id="@+id/editTo"
        android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"/>

    <EditText
        android:layout_width="384dp"
        android:layout_height="42dp"
        android:inputType="textPersonName"
        android:ems="10"
        tools:layout_editor_absoluteX="0dp"
        tools:layout_editor_absoluteY="94dp"
        android:id="@+id/editSubject"
        android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"/>

    <EditText
        android:layout_width="384dp"
        android:layout_height="273dp"
        android:inputType="textPersonName"
        android:ems="10"
        tools:layout_editor_absoluteX="0dp"
        tools:layout_editor_absoluteY="179dp"
        android:id="@+id/editMessage"
        app:layout_constraintLeft_toLeftOf="@+id/activity_main"
        tools:layout_constraintLeft_creator="50"
        android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"/>

    <Button
        android:text="Send"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:layout_editor_absoluteX="140dp"
        tools:layout_editor_absoluteY="454dp"
        android:id="@+id/btnSend"
        app:layout_constraintLeft_toLeftOf="@+id/editMessage"
        tools:layout_constraintLeft_creator="0"
        app:layout_constraintRight_toRightOf="@+id/activity_main"
        android:layout_marginEnd="16dp"
        tools:layout_constraintRight_creator="0"
        android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"/>


</android.support.constraint.ConstraintLayout>

¿Qué error? Describe tu problema real. Esto no es suficiente detalle.
Lexi

¿puedes compartir tu código xml?
Janki Gadhiya

Cuando termine de diseñar el diseño de restricciones, haga clic en el botón para agregar todas las restricciones que faltan automáticamente.
Alex Cohn

1
¿botón? ¿Te refieres a la bombilla de pelusa roja? no muestra ninguna opción para agregar restricciones faltantes automáticamente.
onexf

Respuestas:


81

El diseño de restricciones tiene como objetivo reducir las jerarquías de diseño y mejora el rendimiento de los diseños (técnicamente, no tiene que hacer cambios para diferentes tamaños de pantalla, sin superposición, funciona como el encanto en un dispositivo móvil y también en una pestaña con las mismas restricciones). se deshace del error anterior cuando utiliza el nuevo editor de diseño.

ingrese la descripción de la imagen aquí

Haga clic en el círculo pequeño y arrástrelo hacia la izquierda hasta que el círculo se vuelva verde, para agregar una restricción izquierda (escriba un número, digamos x dp. Repítalo con los otros lados y deje la restricción inferior en blanco si tiene otra vista debajo de ella . ingrese la descripción de la imagen aquí

Editar: De acuerdo con el sitio de desarrolladores, en lugar de agregar restricciones a cada vista a medida que las coloca en el diseño, puede mover cada vista a las posiciones que desee y luego hacer clic en Inferir restricciones para crear restricciones automáticamente. más aquí


Acabo de agregar una vista de imagen en el diseño de restricción, pero no se muestra cuando ejecuto la aplicación. Podrías ayudarme ?
PriyankaChauhan

79

Desde Android Studio v3 y versiones posteriores, Infer Constraint se eliminó del menú desplegable.

Utilice el icono de la varita mágica en el menú de la barra de herramientas sobre la vista previa del diseño; está el botón " Inferir restricciones ". Haga clic en este botón, esto agregará automáticamente algunas líneas en el campo de texto y se eliminará la línea roja.

ingrese la descripción de la imagen aquí


1
En mi caso, solo agrega una restricción de ignorar pero no resuelve el problema
mrroot5

esta solución es más fácil que la de arriba. Pero solo funciona para AS v3 y posteriores.
Yohanes AI

42

Simplemente copie este código en todos los componentes que arrastrará.

app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"

ejemplo:

<TextView
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    android:text="To:"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:layout_editor_absoluteX="7dp"
    tools:layout_editor_absoluteY="4dp"
    android:id="@+id/textTo"/>

5
¿Pero por qué? ¿Puedes explicar sus detalles?
Prathamesh More

22

Vaya al Diseño, haga clic con el botón derecho en su widget, Diseño de restricción >> Inferir restricciones. Puede observar que algún código se ha agregado automáticamente a su texto.


Sí, las restricciones inferidas utilizan los valores predeterminados especificados en el archivo activity.xml
Rohan Gala

5
Follow these steps:
Right click on designing part > Constraint Layout > Infer Constraints

4

Si Inferir el Constraintstodavía le da el error, simplemente use este código:

app:layout_constraintBottom_toBottomOf="parent"

2

Necesitas arrastrar el EditText desde el borde del diseño y no solo el otro widget. También puede agregar restricciones simplemente arrastrando el punto de restricción que rodea el widget hasta el borde de la pantalla para agregar restricciones según lo especificado.

El código modificado tendrá un aspecto similar a esto:

    app:layout_constraintLeft_toLeftOf="@+id/router_text"
    app:layout_constraintTop_toTopOf="@+id/activity_main"
    android:layout_marginTop="320dp"
    app:layout_constraintBottom_toBottomOf="@+id/activity_main"
    android:layout_marginBottom="16dp"
    app:layout_constraintVertical_bias="0.29" 

1

Vaya al texto de diseño XML donde el widget (botón u otra vista) indica error, enfoque el cursor allí y presione alt+ entery seleccione los atributos de restricciones que faltan.


También da un mensaje de advertencia de que la cadena codificada "TextView" debe usar el recurso @string
Mohammad Heydari

1

por ejemplo tengo esto

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"

use el diseño RelativeLayout como este

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

1

Simplemente cambie a la Vista de diseño y ubique el widget en cuestión. Tome uno de los puntos en el límite del widget y únalo a un borde apropiado de la pantalla (o a un punto en algún otro widget).

Por ejemplo, si el widget es una barra de herramientas, simplemente tome el punto más alto y únalo al borde más alto de la pantalla del teléfono como se muestra en la imagen.

Vista de diseño


1
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"

Esto me ayuda mucho


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.