CardView的背景颜色始终为白色。

192

我使用RecyclerViewGridLayoutManager,并将每个项目作为CardView

不幸的是,这里的CardView似乎无法更改其背景颜色。我已经尝试了布局和编程方式,但好像什么都没用。

我已经苦苦挣扎了一段时间。如果有人能帮我解决这个问题,我将不胜感激。


6
请检查此处的卡片背景颜色是否为白色:card_view:cardBackgroundColor="@android:color/white" - santosh kumar
需要代码来帮助。 - Manza
这段代码非常长,因此我没有发布它。让我发布一些相关的代码。 - Ishaan
当我在查看要发布的代码时,我发现在某个地方我放置了cardView.setCardBackgroundColor(Color.WHITE); 这就是它总是白色的原因。 - Ishaan
10个回答

453

如果您想改变卡片的背景颜色,请使用:

app:cardBackgroundColor="@somecolor"

就像这样:

<android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:cardBackgroundColor="@color/white">

</android.support.v7.widget.CardView>

编辑:正如@imposible指出的那样,您需要包括

xmlns:app="http://schemas.android.com/apk/res-auto"

为了使这个代码片段有效,请在您的根XML标记中添加此代码


2
谢谢你的回答,非常感激。 - Ishaan
1
当我像这样使用它时,它对我起作用了 ---> card_view:cardBackgroundColor="@color/white" - Himanshu Mori
2
在你的布局文件中包含xmlns:app="http://schemas.android.com/apk/res-auto"。 - impossible
1
我正在使用 android.support.v7.widget.CardView。对我来说,使用 app:cardBackgroundColor="@somecolor" 是有效的,但是 card_view:cardBackgroundColor="@somecolor" 不行。 - Zamrony P. Juhara
它能够工作了,谢谢! - neo

48

您可以使用XML或编程方式完成:

在XML中:

card_view:cardBackgroundColor="@android:color/red"

以编程方式:

cardView.setBackgroundColor(ContextCompat.getColor(this, R.color.my_color));

1
谢谢你的回答,我已经解决了。我在某个地方以编程方式更改了颜色,但我没有发现它。 - Ishaan

14

Kotlin 用于 XML

app:cardBackgroundColor="@android:color/red"

以编程方式:

cardName.setCardBackgroundColor(ContextCompat.getColor(this, R.color.colorGray));

4
谢谢。我之前使用card.setCardBackgroundColor(R.color.bla)导致了非常奇怪的结果。通过ContextCompat获取颜色对我很有帮助。 - chrjs
正确的做法是使用ContextCompat.getColor而不是直接设置颜色。 - Christian
工作得像一个完美的魔法一样。 - Asad Mehmood

6

Android CardView 背景颜色

XML 代码

<android.support.v7.widget.CardView
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:id="@+id/card_view_top"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:cardCornerRadius="5dp"
        app:contentPadding="25dp"
        app:cardBackgroundColor="#e4bfef"
        app:cardElevation="4dp"
        app:cardMaxElevation="6dp" />

从这段代码

CardView card = findViewById(R.id.card_view_top);
card.setCardBackgroundColor(Color.parseColor("#E6E6E6"));

3
在XML中:
app:cardBackgroundColor="@color/your_color_name"

在Java和Kotlin中,你都可以通过编程实现:

cardView.setCardBackgroundColor(ContextCompat.getColor(this, R.color.your_color_name));

1
在我的情况下,app:cardBackgroundColor="@color/cardViewBlue" 对我有效。

0
如果有人仍然得到了他选择的颜色的白色而非颜色,只需更改你正在使用的模拟器即可,这对我有效。

0

如果在设计视图中仍然看不到,请暂时删除这些行。

app:cardUseCompatPadding="true"

或者

card_view:cardUseCompatPadding="true"

如果需要它们,您可以在构建时将它们添加回来。

-2

app:cardBackgroundColor="#488747"

在您的卡片视图中使用此代码,您可以更改卡片视图的颜色


-2

您可以使用

app:cardBackgroundColor="@color/red"

或者

android:backgroundTint="@color/red"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接