Esta visão não é restrita

95

Recebo o seguinte erro e estou usando o Android Studio 2.2 Preview 3. Pesquisei no Google, mas não consegui encontrar nenhum recurso.

Error: This view is not constrained, it only has design time positions, so it will jump to (0,0) unless you add constraints

insira a descrição da imagem aqui

<TextView
        android:layout_width="384dp"
        android:layout_height="207dp"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="@string/calc_default_display"
        android:id="@+id/textView"
        android:background="#ffffff"
        android:layout_margin="0dp"
        android:gravity="bottom|end"
        android:textSize="70sp"
        android:nestedScrollingEnabled="false"
        android:maxLines="2"
        android:maxLength="17"
        tools:layout_editor_absoluteX="0dp"
        tools:layout_editor_absoluteY="0dp" />
Isuru
fonte

Respostas:

152

Para resolver isso rapidamente , use este atalho muito útil no Android Studio:

Clique com o botão direito do mouse no widget em questão> Layout de restrição> Inferir restrições:

insira a descrição da imagem aqui

Depois disso, você pode ajustar as restrições conforme descrito aqui: https://stackoverflow.com/a/37960888/5556250

Atualizar

Isso não é correto para o Android Studio v3 e superior. De acordo com o comentário de @purpleladydragons :

"Layout de restrição" não está no menu suspenso. 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".

Jay Souper
fonte
2
Muito obrigado pela sua solução, sou um novato absoluto, não tinha ideia do que havia de errado com a posição do widget
Atul Chavan
2
Ótima solução, embora eu deseje que o Android Studio apenas armazene as posições desde o início, em vez de posições de tempo de execução. Uma pergunta melhor é por que o Google achou uma boa ideia armazenar a posição apenas durante o tempo de execução? Essa é uma etapa desnecessária para fazer com que os desenvolvedores cliquem para inferir a posição.
Antônio
Muito obrigado! Muito útil
Paulo de
23
Estou usando o Android Studio 3.0 - "Layout de restrição" não estava no menu suspenso quando cliquei com o botão direito em um widget. Percebi que havia um ícone que parecia uma varinha mágica no menu da barra de ferramentas acima da visualização do design, que também é um botão "Inferir restrições".
purpleladydragons
a solução não pôde ser encontrada no Android Studio versão 3 ou superior
Mohammad Heydari
74

Solução

Basta clicar aqui e será resolvido

Cem U
fonte
Não vejo essa barra de ferramentas com esse botão. Como posso encontrar?
i_am_david
Não sei se você está usando uma versão diferente do Android Studio. Verifique esse botão, ele deve estar em algum lugar lá. Se você não consegue encontrar, existem outras soluções
Cem U
12

Você precisa dar um valor às restrições manualmente ao usar o novo editor de layout ou as restrições ausentes podem ser adicionadas automaticamente clicando no botão da varinha mágica no menu da barra de ferramentas da visualização do projeto.

onexf
fonte
11

você pode tentar isso: 1. certifique-se de ter adicionado: compile 'com.android.support:design:25.3.1' (talvez você também deva adicionar compile 'com.android.support.constraint: constraint-layout: 1.0.2' ) 2.insira a descrição da imagem aqui

3.clique em Infer Constraints , espero que possa ajudá-lo.

BertKing
fonte
7

Tudo bem, então eu sei que esta resposta é antiga, mas descobri como fazer isso para a versão 3.1.4. Portanto, para mim, esse erro ocorre sempre que coloco um novo item na hierarquia, então eu sabia que precisava de uma solução. Depois de mexer um pouco, descobri como fazer isso seguindo estas etapas:

  1. Clique com o botão direito no objeto e vá para o Centro.

Passo 1

  1. Em seguida, selecione Horizontalmente.

Passo 2

  1. Repita essas etapas, exceto clique em Vertically em vez de Horizontally.

Desde que esse método ainda funcione, após a etapa dois, você deve ver linhas onduladas indo horizontalmente onde o item está, e após a etapa três, tanto horizontalmente quanto verticalmente. Após a etapa três, o erro irá embora!

tdog
fonte
6

Clique com o botão direito na peça de design desse componente em que você obteve o erro e siga estas etapas:

  • [por ex. se ocorrer um erro em texto simples]

[1]

Layout de restrição de texto simples> Inferir restrições:

finalmente o erro foi

Satyam Mishra
fonte
6

Clique com o botão direito no widget e escolha "centro" -> "horizontalmente". Em seguida, escolha "centro" -> "verticalmente".

Taimoor Hassan
fonte
6

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

Vinoth
fonte
4

Você apenas tem que clicar com o botão direito do mouse no widget e escolher "centralizar" -> "horizontalmente" e fazer novamente, em seguida, escolher -> "verticalmente" Isso funcionou para mim ...

Ekane 3
fonte
0

você pode ir para o e, em XML fileseguida, focar o cursor do mouse no botão, visualização de texto ou o que você escolher para o seu layout e, em seguida, pressionar Alt + Enterpara consertar, depois disso o erro terá desaparecido. funciona para mim.

Mohammad Heydari
fonte
0

Depois de clicar no ícone da varinha mágica para inferir as restrições:

1) Na janela Projetos, acesse Gradle Scripts> build.gradle (Módulo: app)

2) Role para baixo até dependências

3) Procure a implementação 'com.android.support:appcompat-v7:28.0.0-beta03'

4) Altere esta linha para a implementação 'com.android.support:appcompat-v7:28.0.0-alpha1'

5) Um banner deve aparecer na parte superior da janela, clique em Sincronizar agora no canto direito.

Isso funciona para o Android Studio v3.1, clique para ver a imagem de editar o arquivo build.gradle

pablo.programmer
fonte
0

Ao criar um layout, é mais fácil trabalhar com um controle por vez, em vez de adicioná-los todos de uma vez.

Na Paleta de layouts, arraste um ConstraintLayout para a tela.

Mova os controles desejados dentro do ConstraintLayout.

Portanto, o ConstraintLayout agora será o pai do controle e, se você alternar para o código xml, os controles serão aninhados no ConstraintLayout.

Clique com o botão direito em seu controle, selecione Constraint no menu e selecione como deseja alinhá-lo ao ConstraintLayout pai, topo, início, etc.

Se você precisar alinhar dois controles um em relação ao outro, selecione ambos os controles ao mesmo tempo com a tecla Ctrl e clique com o botão direito para abrir o menu de restrição.

Mais informações: https://developer.android.com/training/constraint-layout

insira a descrição da imagem aqui

insira a descrição da imagem aqui Você pode especificar a distância de separação de restrição na guia Layout de restrição:

insira a descrição da imagem aqui

amor ao vivo
fonte