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"
cardBackgroundColor
是 MaterialCardView
的自定义 属性,因此它有自己的前缀,由 XML 文件顶部的 xmlns:app="http://schemas.android.com/apk/res-auto"
行设置(您可以交换以 xmlns:whatever="..."
开头,然后您可以使用 whatever:cardBackgroundColor
前缀)
text
是 TextView
的属性集,出现在每个 Android 版本中,因此只需使用默认的 android:
前缀
所以尝试使用正确的前缀而不是 tools:
tools:cardBackgroundColor="#005ECB"
至
app:cardBackgroundColor="#005ECB"
和
tools:text=""
至
android:text=""
tools
前缀只是 configuring/disabling 一些 lint 检查,与特定 View
s
的属性无关
顺便说一句。 “设计视图”有用于设置方向的选项(下拉列表)、API lvl(OS 版本)、设备语言和一些其他用于预览的参数。尝试设置与设备上相同的 API lvl - 您的预览应该与设备上的完全相同
我正在创建一个使用 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"
cardBackgroundColor
是 MaterialCardView
的自定义 属性,因此它有自己的前缀,由 XML 文件顶部的 xmlns:app="http://schemas.android.com/apk/res-auto"
行设置(您可以交换以 xmlns:whatever="..."
开头,然后您可以使用 whatever:cardBackgroundColor
前缀)
text
是 TextView
的属性集,出现在每个 Android 版本中,因此只需使用默认的 android:
前缀
所以尝试使用正确的前缀而不是 tools:
tools:cardBackgroundColor="#005ECB"
至
app:cardBackgroundColor="#005ECB"
和
tools:text=""
至
android:text=""
tools
前缀只是 configuring/disabling 一些 lint 检查,与特定 View
s
顺便说一句。 “设计视图”有用于设置方向的选项(下拉列表)、API lvl(OS 版本)、设备语言和一些其他用于预览的参数。尝试设置与设备上相同的 API lvl - 您的预览应该与设备上的完全相同