📅  最后修改于: 2023-12-03 15:29:56.526000             🧑  作者: Mango
在使用Android中的CardView控件时,有时候会遇到设置背景不起作用的问题。这可能会导致UI的错误和不一致性。本文将介绍如何解决这个问题。
在使用 CardView 控件时,我们可以通过设置 XML 属性或在代码中设置背景画板来改变 CardView 的背景颜色或背景图片。但是实际上,改变 背景画板 并没有对控件的背景造成任何影响,对控件的背景设置是无效的。
例如,你可以在 XML 中这样设置:
<android.support.v7.widget.CardView
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
card_view:cardBackgroundColor="#ffffff"
card_view:cardElevation="8dp"
card_view:cardUseCompatPadding="true"
android:background="#ffffff"
>
或者在代码中这样设置:
val cardView = findViewById<CardView>(R.id.card_view)
cardView.setBackgroundResource(R.drawable.bg_card)
这些设置都看起来是可以让 CardView 显示不同的背景图片或颜色,但是实际上它们并没有生效。
实际上,CardView 的背景要通过它的 child view 来设置。我们需要将一个 View 加入到 CardView 的布局中,并为这个 View 设置背景。
例如,你可以在 XML 中这样设置:
<android.support.v7.widget.CardView
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
card_view:cardElevation="8dp"
card_view:cardUseCompatPadding="true"
>
<LinearLayout
android:id="@+id/bg_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
>
<!-- 其他的子 View -->
</LinearLayout>
</android.support.v7.widget.CardView>
或者在代码中这样设置:
val cardView = findViewById<CardView>(R.id.card_view)
val bgLayout = findViewById<LinearLayout>(R.id.bg_layout)
bgLayout.setBackgroundResource(R.drawable.bg_card)
这样就能够正确设置 CardView 的背景了。
在 Android 中,CardView 的背景设置需要通过其 child view 来实现。
以上就是解决 CardView 设置背景不起作用的方法。
其他提示:
为了获得更好的效果,建议在 CardView 的 child view 中添加阴影效果:
<LinearLayout
android:id="@+id/bg_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
android:elevation="2dp"
>
<!-- 其他的子 View -->
</LinearLayout>