问题
How to add cardview in layout xml in AndroidX
After upgraded to AndroidX
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp">
gives a error
The following classes could not be found: - android.support.v7.widget.CardView (Fix Build Path, Edit XML, Create Class)
dependencies {
implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'androidx.cardview:cardview:1.0.0'
but I don't know how to use CardView in xml under AndroidX
Thank you
回答1:
The class has changed to:
androidx.cardview.widget.CardView
If you want to use the old class names, you need to add android:enableJetifier=true
to your gradle.properties
and use the appcompat dependencies instead.
回答2:
I think the Best Approach
should be like, understanding the problem statement first.
Scenario:
- Search for the library which Google Inc has changed for "AndroidX" and include in project
Solution :
Go to Artifact Mappings page of Android Developer Site and Search for your desired library.
Now go to AndroidX Releases page and check for the current version number
now go to build.gradle[module.app]
add the library you want. (ie. CardView in my case) and press Sync Now
and necessary files will be added to your project by gradle.
See the image below:
Now in xml file you should get CardView or something you have just imported.
NB: pictures included here are (the first two) taken from Android Developer's Page which belongs to Google Inc and could be different depending on the time you see. See this post's posting time.
回答3:
For AndroidX, Add in gradle dependencies
implementation 'androidx.cardview:cardview:1.0.0'
Then in xml-layout use
<androidx.cardview.widget.CardView
回答4:
Add 'androidx.cardview:cardview:1.0.0' in gradle dependencies and modify xml accordingly.
回答5:
You have 2 different options:
- Material Components MaterialCardView
Just add:
implementation 'com.google.android.material:material:1.1.0-beta01'
and in your xml you can use:
<com.google.android.material.card.MaterialCardView
...>
- Androidx CardView
Just add:
implementation 'androidx.cardview:cardview:1.0.0'
and in your xml you can use:
<androidx.cardview.widget.CardView>
They are different:
MaterialCardView
extends androidx.cardview.widget.CardView
and provides all of the features of CardView, but adds attributes for customizing the stroke and uses an updated Material style by default (it uses by deafult the style Widget.MaterialComponents.CardView
)
More info here.
回答6:
Replace this line
from
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
to
<androidx.cardview.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
This will work fine in AndroidX.
回答7:
implementation com.google.android.material:material:1.0.0
to
implementation com.google.android.material:material:1.0.0-alpha1
it is download all design related class. its work for Me
回答8:
I had the same problem in Android Studio 3.5.1. It worked for me:
def cardview_version = "1.0.0"
implementation "androidx.cardview:cardview:$cardview_version"
xmln: <androidx.cardview.widget.CardView>....
来源:https://stackoverflow.com/questions/53089633/how-to-add-cardview-in-layout-xml-in-androidx