文档中写到 CardView 的 BackgroundColor 可以在 XML 中使用card_view:cardBackgroundColor
. 但是,我找不到相应的方法来动态更改背景。
使用mCardView.setBackgroundColor(Color.argb(75, 102,80,67));
会导致 CardView 失去圆角和阴影。
文档中写到 CardView 的 BackgroundColor 可以在 XML 中使用card_view:cardBackgroundColor
. 但是,我找不到相应的方法来动态更改背景。
使用mCardView.setBackgroundColor(Color.argb(75, 102,80,67));
会导致 CardView 失去圆角和阴影。
为卡片视图的子类提供背景颜色将留下填充部分,以防卡片视图有任何没有颜色,这不是一个好方法。
假设您有一个适配器来加载卡片视图中的列表,如下所示动态更改卡片视图颜色。
在适配器 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 是您的查看器类的对象。
我通过设置 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);
仅使用 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));
即将发布的版本中将有一个 API。目前,您唯一的选择是使用 XML。