在文档中写道,可以使用card_view:cardBackgroundColor
以XML格式设置CardView的BackgroundColor。但是,我找不到相应的方法来动态更改背景。
使用mCardView.setBackgroundColor(Color.argb(75, 102,80,67));
会导致CardView丢失圆角和阴影。
答案 0 :(得分:8)
为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
持有人是您的观察者类别的对象。
答案 1 :(得分:1)
通过设置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);
答案 2 :(得分: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));
答案 3 :(得分:-2)
即将发布的版本中将有一个API。目前,您唯一的选择是使用XML。