5

文档中写到 CardView 的 BackgroundColor 可以在 XML 中使用card_view:cardBackgroundColor. 但是,我找不到相应的方法来动态更改背景。

使用mCardView.setBackgroundColor(Color.argb(75, 102,80,67));会导致 CardView 失去圆角和阴影。

4

4 回答 4

8

为卡片视图的子类提供背景颜色将留下填充部分,以防卡片视图有任何没有颜色,这不是一个好方法。

假设您有一个适配器来加载卡片视图中的列表,如下所示动态更改卡片视图颜色。

在适配器 Viewholder 类的构造函数中

mCardView = (CardView) itemView.findViewById(R.id.card_view);

在适配器类的 onBindViewHolder 方法中:

holder.mCardView.setCardBackgroundColor(Color.GREEN); // will change the background color of the card view to green

其中 holder 是您的查看器类的对象。

于 2015-05-16T08:20:25.267 回答
2

我通过设置 CardView 的孩子的背景让它工作得很好:

    <android.support.v7.widget.CardView
        android:id="@+id/card_view"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
        <LinearLayout
            android:orientation="vertical"
            android:id="@+id/card_layout"
            android:layout_width="match_parent"
            android:layout_height="72dp"/>
    </android.support.v7.widget.CardView>

然后

    View cardLayout = mCardView.findViewById(R.id.card_layout);
    cardLayout.setBackgroundColor(Color.GREEN);
于 2014-10-15T19:29:34.467 回答
1

仅使用 Color.GREEN 您不会得到您期望的结果。

使用ContextCompat.getColor(@NonNull context: Context, @ColorRes id: Int)

它返回与特定资源 ID 关联的颜色

View cardLayout = mCardView.findViewById(R.id.card_layout);
cardLayout.setBackgroundColor(ContextCompat.getColor(this, Color.GREEN));
于 2021-03-20T23:49:42.107 回答
-2

即将发布的版本中将有一个 API。目前,您唯一的选择是使用 XML。

于 2014-10-24T18:23:10.493 回答