如何在 AndroidX 的布局 xml 中添加 cardview

How to add cardview in layout xml in AndroidX

如何在 AndroidX

布局 xml 中添加 cardview

升级到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">

报错

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'

但是我不知道如何在AndroidXxml下使用CardView

谢谢

class已更改为:

androidx.cardview.widget.CardView

如果您想使用旧的 class 名称,您需要将 android:enableJetifier=true 添加到 gradle.properties 并改用 appcompat 依赖项。

替换此行

来自

<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"

<androidx.cardview.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"

这将在 AndroidX.

中正常工作

在gradle依赖项中添加'androidx.cardview:cardview:1.0.0'并相应修改xml。

对于 AndroidX,添加 gradle 依赖项

implementation 'androidx.cardview:cardview:1.0.0'

然后在xml-布局中使用

<androidx.cardview.widget.CardView

implementation com.google.android.material:material:1.0.0

implementation com.google.android.material:material:1.0.0-alpha1

下载所有设计相关class。 它对我有用

我觉得Best Approach应该是这样的,先理解问题的陈述。

场景:

  • 搜索 Google Inc 为 "AndroidX" 更改并包含在项目
  • 中的库

解法:

前往 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:



现在在 xml 文件中你应该得到 CardView 或你刚导入的东西。

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.

您有 2 个不同的选择:

只需添加:

implementation 'com.google.android.material:material:1.2.0'

并且在您的 xml 中您可以使用:

 <com.google.android.material.card.MaterialCardView
  ...>
  • Androidx CardView

只需添加:

implementation 'androidx.cardview:cardview:1.0.0'

并且在您的 xml 中您可以使用:

<androidx.cardview.widget.CardView>

它们是不同的:

MaterialCardView 扩展 androidx.cardview.widget.CardView并提供 CardView 和

的所有功能
  • 添加对 checking and dragging
  • 的支持
  • 默认使用 MaterialComponents 主题(它默认使用样式 Widget.MaterialComponents.CardView
  • 支持ShapeAppearanceModel
  • 添加用于自定义笔画的属性

我在 Android Studio 3.5.1 中遇到了同样的问题。它对我有用:

def cardview_version = "1.0.0"
implementation "androidx.cardview:cardview:$cardview_version"


xmln: <androidx.cardview.widget.CardView>....

变化: 1。 build.gradle(:app)

dependencies {
...
implementation 'androidx.cardview:cardview:1.0.0' 
....
}

2。在 xml 部分:

<androidx.cardview.widget.CardView>
...
</androidx.cardview.widget.CardView>
 implementation 'androidx.cardview:cardview:1.0.0' // must add this ``


               <androidx.cardview.widget.CardView
                android:layout_width="match_parent"
                android:layout_height="200dp"
                android:layout_marginLeft="25dp"
                android:layout_marginTop="20dp"
                android:id="@+id/game_id"
                android:layout_marginRight="25dp"
                app:cardBackgroundColor=""
                app:cardCornerRadius="15dp">

                <LinearLayout
                    android:layout_width="match_parent"
                    android:orientation="horizontal"
                    android:layout_height="match_parent">

                    <ImageView
                        android:layout_width="130dp"
                        android:layout_height="170dp"
                        android:layout_gravity="center"
                        android:layout_marginLeft="5dp"
                        android:background="@drawable/gamess">

                    </ImageView>


                    <TextView
                        android:layout_width="130dp"
                        android:layout_marginLeft="20dp"
                        android:layout_height="wrap_content"
                        android:layout_below="@+id/game"
                        android:layout_centerHorizontal="true"
                        android:layout_marginTop="10dp"
                        android:gravity="center"
                        android:text="Gamensjnjdhddgsgddgjsdjsdgjsgdjsgddgjsdjsdjg"
                        android:textColor="@color/white_color"
                        android:textSize="16dp"
                        android:textStyle="bold">

                    </TextView>
                </LinearLayout>

            </androidx.cardview.widget.CardView>

[![Blockquote][1]][1]