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" />

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".


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


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.


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.


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!


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


6

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


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


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 ...


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.


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


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

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.