Android - MaterialCardView 未在 API 级别 27 设备上显示

Android - MaterialCardView not displaying on API level 27 devices

我正在创建一个使用 MaterialCardViews 的 XML 布局,这样我就可以设置卡片背景颜色和圆角半径。

它在 Android Studio 的 XML 设计选项卡中按预期显示,并且在部署到 API 28+ 设备时也是如此。

部署到 API 27 设备时,卡片视图不会呈现。

我是不是遗漏了什么,或者 MaterialCardViews 无法使用 API 27 岁及以上?

我的布局

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_marginStart="20dp"
    android:clipChildren="false"
    android:clipToPadding="false"
    android:padding="12dp">

    <com.google.android.material.card.MaterialCardView
        android:id="@+id/emojiBackground"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:cardCornerRadius="1000dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:cardBackgroundColor="#005ECB">

        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="12dp">

            <TextView
                android:id="@+id/emoji"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:paddingBottom="4dp"
                android:textColor="@android:color/black"
                android:textSize="30sp"
                app:layout_constraintDimensionRatio="1:1"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                tools:text="" />

        </androidx.constraintlayout.widget.ConstraintLayout>

    </com.google.android.material.card.MaterialCardView>

</androidx.constraintlayout.widget.ConstraintLayout>

设计视图

在设备上查看

我的依赖关系

    implementation 'androidx.core:core-ktx:1.6.0'
    implementation 'androidx.appcompat:appcompat:1.3.1'
    implementation 'com.google.android.material:material:1.4.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
    implementation 'androidx.navigation:navigation-fragment-ktx:2.3.5'
    implementation 'androidx.navigation:navigation-ui-ktx:2.3.5'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
    implementation "androidx.recyclerview:recyclerview:1.2.0"
    implementation "androidx.cardview:cardview:1.0.0"
    implementation "androidx.percentlayout:percentlayout:1.0.0"

cardBackgroundColorMaterialCardView 的自定义 属性,因此它有自己的前缀,由 XML 文件顶部的 xmlns:app="http://schemas.android.com/apk/res-auto" 行设置(您可以交换以 xmlns:whatever="..." 开头,然后您可以使用 whatever:cardBackgroundColor 前缀)

textTextView 的属性集,出现在每个 Android 版本中,因此只需使用默认的 android: 前缀

所以尝试使用正确的前缀而不是 tools:

tools:cardBackgroundColor="#005ECB"

app:cardBackgroundColor="#005ECB"

tools:text=""

android:text=""

tools 前缀只是 configuring/disabling 一些 lint 检查,与特定 Views

的属性无关

顺便说一句。 “设计视图”有用于设置方向的选项(下拉列表)、API lvl(OS 版本)、设备语言和一些其他用于预览的参数。尝试设置与设备上相同的 API lvl - 您的预览应该与设备上的完全相同