Ошибка CardView: не удается разрешить класс android.support.v7.widget.CardView

Я пытаюсь использовать cardview с моим recyclerview. Представление ресайклера работает само по себе. Я настроил его с привязкой к данным. Но я хотел, чтобы recyclerview выглядел лучше, поэтому я хочу использовать с ним cardview.

Это мой файл макета для отдельных представлений:

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

<data>
    <variable
        name="individualEntry"
        type="com.zebotek.balancedmindjournal.persistance.JournalEntryDataClass" />
</data>

<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <android.support.v7.widget.CardView
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:id="@+id/card_view"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_gravity="center"
        card_view:cardCornerRadius="4dp">

        <TextView
            android:id="@+id/dateTextBox"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="14sp"
            app:dateStringFormatted="@{individualEntry}"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:id="@+id/journalEntryTextBox"
            android:layout_width="match_parent"
            android:layout_height="36dp"
            android:paddingStart="16dp"
            android:paddingEnd="16dp"
            android:textSize="14sp"
            app:journalEntryText="@{individualEntry}"
            app:layout_constraintTop_toBottomOf="@+id/dateTextBox" />

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

</androidx.constraintlayout.widget.ConstraintLayout>

и это мои зависимости:

cardView_version = '28.0.0'    

implementation "com.android.support:cardview-v7:$cardView_version"
implementation "com.android.support:appcompat-v7:$cardView_version"
implementation "com.android.support:recyclerview-v7:$cardView_version"

Я не могу определить ничего, что я мог бы сделать по-другому. У меня minSdkVersion установлен на 21.

Код отлично работает без cardview. Если я добавлю cardview, теперь он не будет компилироваться, и я получу эту ошибку. Я даже попытался разместить cardview выше constraintlayout. Я заменил constraintlayout на cardview и даже заменил макет верхнего уровня на cardview.


person James Futures    schedule 13.10.2020    source источник
comment
Проверьте stackoverflow.com/a/61974226/2016562   -  person Gabriele Mariotti    schedule 13.10.2020


Ответы (2)


Попробуйте использовать androidx.cardview.widget.CardView вместо android.support.v7.widget.CardView.

И добавьте зависимость:

implementation "androidx.cardview:cardview:1.0.0"
person Yeldar.N    schedule 13.10.2020
comment
Добавление изменения для использования androidx.cardview.widget.CardView вместе с зависимостью решило проблему. Что действительно сбивает меня с толку во всем этом, так это то, что я не могу найти это (вместе с зависимостью, которую вы упомянули) нигде в документации Android. - person James Futures; 13.10.2020
comment
support.v7.* или support.v4.* больше не обслуживаются. Все они перешли на androidx. Я рекомендую вам изучить вопросы обратной совместимости и androidx. - person Yeldar.N; 13.10.2020

Если вы используете androidx (это видно на вашем первом макете), я все же рекомендую использовать CardView из AndroidX

просто импортируйте в yout build.gradle

dependencies {
    implementation "androidx.cardview:cardview:1.0.0"
    implementation "androidx.appcompat:appcompat:1.2.0"
    implementation "androidx.recyclerview:recyclerview:1.1.0"
}

Другая рекомендация - удалить ConstraintLayout и оставить только CardView.

person Alex Escobar    schedule 13.10.2020