Esta visualização não é restrita verticalmente. Em tempo de execução irá saltar para a esquerda a menos que você adicione uma restrição vertical


99

insira a descrição da imagem aquiO novo editor de layout no Android Studio 2.2 continua mostrando esse erro em visualizações como EditText e Buttons. gentilmente ajude. Além disso, agradecemos quaisquer links que ajudem na integração com o novo layout de restrição.

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>

Que erro? Descreva seu problema real. Isso não chega a ser detalhes suficientes.
Lexi

você pode compartilhar seu código xml ??
Janki Gadhiya de

Quando terminar de definir o layout de restrição, clique no botão para adicionar automaticamente todas as restrições ausentes.
Alex Cohn

1
botão? quer dizer a lâmpada vermelha de fiapos? não está mostrando nenhuma opção para adicionar restrições ausentes automaticamente.
onexf

Respostas:


81

O layout de restrição visa reduzir as hierarquias de layout e melhorar o desempenho dos layouts (tecnicamente, você não precisa fazer alterações para diferentes tamanhos de tela, sem sobreposição, funciona bem em um celular e também em uma guia com as mesmas restrições). você se livra do erro acima ao usar o novo editor de layout.

insira a descrição da imagem aqui

Clique no pequeno círculo e arraste-o para a esquerda até que o círculo fique verde, para adicionar uma restrição à esquerda (forneça um número, digamos x dp. Repita-o com os outros lados e deixe a restrição inferior em branco se houver outra visualização abaixo dela . insira a descrição da imagem aqui

Edit: De acordo com o site do desenvolvedor, em vez de adicionar restrições a cada visão conforme você as coloca no layout, você pode mover cada visão para as posições desejadas e clicar em Inferir restrições para criar restrições automaticamente. mais aqui


Acabei de adicionar a visualização da imagem no layout de restrição, mas não aparece quando executo o aplicativo. Você pode por favor me ajudar ?
PriyankaChauhan

79

No Android Studio v3 e superior, Infer Constraint foi removido da lista suspensa.

Use o ícone da varinha mágica no menu da barra de ferramentas acima da visualização do projeto; existe o botão " Inferir restrições ". Clique neste botão, isso adicionará automaticamente algumas linhas no campo de texto e a linha vermelha será removida.

insira a descrição da imagem aqui


1
No meu caso, ele apenas adiciona uma restrição de ignorar, mas não resolve o problema
mrroot5

esta solução é mais fácil do que a superior. Mas só funciona para AS v3 e posterior.
Yohanes AI

42

Basta copiar este código para todos os componentes que você arrastará.

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

exemplo:

<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
Mas por que? Você pode explicar seus detalhes?
Prathamesh More

22

Vá para Design, clique com o botão direito do mouse em seu widget, Constraint Layout >> Infer Constraints. Você pode observar que algum código foi adicionado automaticamente ao seu Texto.


Sim, as restrições de inferência usam os valores padrão especificados no arquivo activity.xml
Rohan Gala

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

4

Se inferir o Constraintsainda apresentar o erro, basta usar este código:

app:layout_constraintBottom_toBottomOf="parent"

2

Você precisa arrastar o EditTextda borda do layout e não apenas o outro widget. Você também pode adicionar restrições apenas arrastando o ponto de restrição que circunda o widget para a borda da tela para adicionar restrições conforme especificado.

O código modificado será semelhante a este:

    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

Vá para o texto de layout XML onde o widget (botão ou outra Visualização) indica erro, focalize o cursor lá e pressione alt+ entere selecione os atributos de restrições ausentes.


Também fornece uma mensagem de aviso de que a string codificada "TextView" deve usar o recurso @string
Mohammad Heydari

1

por exemplo eu tenho isso

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

usar o layout RelativeLayout como este

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

1

Basta mudar para a Visualização de design e localizar o widget em questão. Pegue um dos pontos no limite do widget e junte-o a uma borda apropriada da tela (ou a um ponto em algum outro widget).

Por exemplo, se o widget for uma barra de ferramentas, basta pegar o ponto superior e uni-lo à borda superior da tela do telefone, conforme mostrado na imagem.

Vista de Design


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

Isso me ajuda muito


-3

Você tem que mudar androidx.constraintlayout.widget.ConstraintLayoutpara RelativeLayout.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.