android - Android CardView:为什么角落不圆?
问题描述
解决了!
解决方案:从布局中删除背景颜色并将其设置为卡片视图本身
app:cardBackgroundColor=" # the color you want"
并确保您具有以下依赖项
implementation 'com.google.android.material:material:1.1.0'
那些应该做的工作。
更新!--> 添加了额外的信息
我有以下活动,我尝试制作 3 个包含信息的卡片视图。我想让卡片视图有圆角。
我使用app:cardCornerRadius="8dp"
但它没有显示任何结果,角落仍然不圆。
知道我的错误在哪里以及我需要做什么才能使它们四舍五入吗?是因为 CardView 内部的布局吗?
谢谢!
您可以在下面看到 XML 文件
<?xml version="1.0" encoding="utf-8"?>
<ScrollView 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="match_parent"
android:layout_height="match_parent"
tools:context=".view.ViewRecipe"
android:padding="16dp"
android:background="@color/mainBackgroundColorRM">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:fontFamily="sans-serif"
android:text="Spaghette"
android:textAlignment="center"
android:textColor="#000000"
android:textSize="32sp" />
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="12dp"
android:layout_marginEnd="8dp"
app:cardPreventCornerOverlap="false"
app:cardCornerRadius="8dp"
app:cardElevation="20dp">
<!-- Here add the Contact Details-->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/buttonColorRM"
android:paddingStart="32dp"
android:paddingTop="8dp"
android:paddingEnd="32dp"
android:paddingBottom="8dp">
<!-- Here add the time value -->
<TextView
android:id="@+id/text_view_duration_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:text="10 minute"
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"
android:textColor="#000000">
</TextView>
<!-- Here add the portii value -->
<TextView
android:id="@+id/text_view_servings_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/text_view_duration_value"
android:layout_alignParentEnd="true"
android:text="@string/Servings_VALUE_demo"
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large"
android:textColor="#000000">
</TextView>
<!-- Duration is here-->
<TextView
android:id="@+id/text_view_duration"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/text_duration_ViewRecipe"
android:layout_toStartOf="@id/text_view_duration_value"
android:layout_alignParentStart="true"
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large"
android:textColor="#000000"
android:textStyle="bold">
</TextView>
<!-- Time is here-->
<TextView
android:id="@+id/text_view_portii"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/text_view_duration"
android:text="@string/text_servings_ViewRecipe"
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large"
android:textColor="#000000"
android:textStyle="bold">
</TextView>
</RelativeLayout>
</androidx.cardview.widget.CardView>
<!-- Ingredients -->
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="12dp"
app:cardElevation="20dp"
app:cardPreventCornerOverlap="false"
app:cardCornerRadius="8dp">
<!-- Here add the Contact Details-->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:paddingStart="32dp"
android:paddingEnd="32dp"
android:background="@color/buttonColorRM">
<!-- Duration is here-->
<TextView
android:id="@+id/text_view_ingredients"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" Incrediente:"
android:layout_alignParentStart="true"
android:ellipsize="end"
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large"
android:textColor="#000000"
android:textStyle="bold"
android:drawableStart="@drawable/list_icon">
</TextView>
<!-- Time is here-->
<TextView
android:id="@+id/text_view_ingredients_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/text_view_ingredients"
android:text="Incredient 1, incredient 2, altul mai unul si ai unul"
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"
android:textColor="#000000">
</TextView>
</RelativeLayout>
</androidx.cardview.widget.CardView>
<!-- Recipe -->
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="12dp"
app:cardElevation="20dp"
app:cardPreventCornerOverlap="false"
app:cardCornerRadius="8dp">
<!-- Recipe description is here-->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:paddingStart="32dp"
android:paddingEnd="32dp"
android:background="@color/buttonColorRM">
<!-- Duration is here-->
<TextView
android:id="@+id/text_view_recipe"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/text_view_descriere_ViewRecipe"
android:layout_alignParentStart="true"
android:ellipsize="end"
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large"
android:textColor="#000000"
android:textStyle="bold"
android:drawableStart="@drawable/description_icon">
</TextView>
<!-- Time is here-->
<TextView
android:id="@+id/text_view_recipe_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/text_view_recipe"
android:text="@string/demo_reteta"
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"
android:textColor="#000000">
</TextView>
</RelativeLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
</ScrollView>
这里还有 Gradle Module App 文件
apply plugin: 'com.android.application'
android {
compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "com.ciucurdaniel.romania.retetelemele"
minSdkVersion 26
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
targetCompatibility = 1.8
sourceCompatibility = 1.8
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
//AD MOB
implementation 'com.google.android.gms:play-services-ads:19.1.0'
//CardView
implementation 'androidx.cardview:cardview:1.0.0'
}
解决方案
由于您设置了内部布局的背景,您CardView
是圆角但不显示圆角。只需将该背景内部布局移动到CardView
<?xml version="1.0" encoding="utf-8"?>
<ScrollView 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="match_parent"
android:layout_height="match_parent"
tools:context=".view.ViewRecipe"
android:padding="16dp"
android:background="@color/mainBackgroundColorRM">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:fontFamily="sans-serif"
android:text="Spaghette"
android:textAlignment="center"
android:textColor="#000000"
android:textSize="32sp" />
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="12dp"
android:layout_marginEnd="8dp"
android:background="@color/buttonColorRM"
app:cardPreventCornerOverlap="false"
app:cardCornerRadius="8dp"
app:cardElevation="20dp">
<!-- Here add the Contact Details-->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="32dp"
android:paddingTop="8dp"
android:paddingEnd="32dp"
android:paddingBottom="8dp">
<!-- Here add the time value -->
<TextView
android:id="@+id/text_view_duration_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:text="10 minute"
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"
android:textColor="#000000">
</TextView>
<!-- Here add the portii value -->
<TextView
android:id="@+id/text_view_servings_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/text_view_duration_value"
android:layout_alignParentEnd="true"
android:text="@string/Servings_VALUE_demo"
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large"
android:textColor="#000000">
</TextView>
<!-- Duration is here-->
<TextView
android:id="@+id/text_view_duration"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/text_duration_ViewRecipe"
android:layout_toStartOf="@id/text_view_duration_value"
android:layout_alignParentStart="true"
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large"
android:textColor="#000000"
android:textStyle="bold">
</TextView>
<!-- Time is here-->
<TextView
android:id="@+id/text_view_portii"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/text_view_duration"
android:text="@string/text_servings_ViewRecipe"
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large"
android:textColor="#000000"
android:textStyle="bold">
</TextView>
</RelativeLayout>
</androidx.cardview.widget.CardView>
<!-- Ingredients -->
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="12dp"
android:background="@color/buttonColorRM"
app:cardElevation="20dp"
app:cardPreventCornerOverlap="false"
app:cardCornerRadius="8dp">
<!-- Here add the Contact Details-->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:paddingStart="32dp"
android:paddingEnd="32dp"
>
<!-- Duration is here-->
<TextView
android:id="@+id/text_view_ingredients"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" Incrediente:"
android:layout_alignParentStart="true"
android:ellipsize="end"
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large"
android:textColor="#000000"
android:textStyle="bold"
android:drawableStart="@drawable/list_icon">
</TextView>
<!-- Time is here-->
<TextView
android:id="@+id/text_view_ingredients_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/text_view_ingredients"
android:text="Incredient 1, incredient 2, altul mai unul si ai unul"
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"
android:textColor="#000000">
</TextView>
</RelativeLayout>
</androidx.cardview.widget.CardView>
<!-- Recipe -->
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="12dp"
android:background="@color/buttonColorRM"
app:cardElevation="20dp"
app:cardPreventCornerOverlap="false"
app:cardCornerRadius="8dp">
<!-- Recipe description is here-->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:paddingStart="32dp"
android:paddingEnd="32dp"
>
<!-- Duration is here-->
<TextView
android:id="@+id/text_view_recipe"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/text_view_descriere_ViewRecipe"
android:layout_alignParentStart="true"
android:ellipsize="end"
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large"
android:textColor="#000000"
android:textStyle="bold"
android:drawableStart="@drawable/description_icon">
</TextView>
<!-- Time is here-->
<TextView
android:id="@+id/text_view_recipe_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/text_view_recipe"
android:text="@string/demo_reteta"
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"
android:textColor="#000000">
</TextView>
</RelativeLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
</ScrollView>
推荐阅读
- kubernetes - K8s如何为每个特定节点部署pod 1,而不是集群中的所有节点
- typescript - TypeScript 在泛型中扩展的奇怪类型行为
- python-3.x - 我查找列表均值的函数有什么问题?
- node.js - 如何在 mongoDB 聚合上进行嵌套分页
- asp.net-core-webapi - Microsoft 浏览器链接是否适用于 API 项目?
- here-api - 有没有地方可以报告 HERE 浏览搜索 API 的 API 数据错误?
- python - python - 如何在python中导入与postgres服务器不同的表?
- html - 如何使用 flexbox 将溢出的内容包装在一行中?
- r - R使用模式向量搜索字符向量
- xml - 从 xslt 1.0 中的单个字符串拆分大括号