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>
onexf
fonte
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

onexf
fonte
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

Gvtha
fonte
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"/>
ainz Montenegro
fonte
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.

Atul Chavan
fonte
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
Makvin
fonte
4

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

app:layout_constraintBottom_toBottomOf="parent"
user8622246
fonte
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" 
Abdul Rahman K
fonte
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.

KeyBoardBoy
fonte
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"
ibrahim mert
fonte
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

Sunit Gautam
fonte
1
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"

Isso me ajuda muito

Vanya Rachel
fonte
-3

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

Youness Labghough
fonte