Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Erro no CardView - Constraint invalida

Boa Noite,

analisando o XML que foi disponibilizado no curso identifiquei no AS que a constraint que esta sendo referenciada (conforme abaixo) é invalida, recebo o seguinte erro : Layout constraints in a given ConstraintLayout or RelativeLayout should reference other views within the same relative layout (but not itself!)

        app:layout_constraintBottom_toTopOf="@+id/item_pacote_imagem"

Se eu não posso fazer esse tipo de relacionamento como deve ser relacionado a constraint ?

Obs: eu removi do meu XML, e adicionei o atributo "layout_height" com o tamanho de "wrap_content", seria correta essa abordagem ?

3 respostas

Olá, tudo bom Pablo

Você poderia disponibilizar o xml inteiro, fica mais fácil pra entender o problema, e te responder

o meu XML inicialmente ficou igual ao proposto no curso, vou colocar na sequencia o xml como estava e como eu alterei

XML proposto no curso:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <android.support.v7.widget.CardView
        android:id="@+id/item_pacote_cardview"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        app:cardCornerRadius="10dp"
        app:layout_constraintBottom_toTopOf="@+id/item_pacote_imagem"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <android.support.constraint.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <ImageView
                ..../imagem" />

            <TextView
                ..../>

            <View
               ..... />

            <TextView..../>

            <TextView...../>

        </android.support.constraint.ConstraintLayout>

    </android.support.v7.widget.CardView>

</android.support.constraint.ConstraintLayout>

Meu XML alterado com as correções para a exibição no AS:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <android.support.v7.widget.CardView
        android:id="@+id/item_pacote_cardview"
        android:layout_width="0dp"
        android:layout_margin="8dp"
        android:layout_marginBottom="8dp"
        app:cardCornerRadius="10dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_height="wrap_content">

        <android.support.constraint.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <ImageView...../>

            <TextView.....
                />

            <View.... />

            <TextView..../>
....
solução!

Acho que é um erro no código disponibilizado no exercício cara.

Ele esta tentando alinhar o bottom do CardView , ao Top do ImageView, que por sua vez esta dento deste CardView (confuso até para explicar neh).

Sua solução está correta.

Remover a linha que está gerando o erro:

app:layout_constraintBottom_toTopOf="@+id/item_pacote_imagem"

E como o CardView tem a altura definida como wrap_content e vai crescer conforme a necessidade, para este caso, você não precisa definir a constraint para o bottom.

Mas caso você queira definir esta constraint , segue uma possível solução:

<android.support.v7.widget.CardView
        android:id="@+id/item_pacote_cardview"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        app:cardCornerRadius="10dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.0">

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software