我有一个使用CardView的简单布局
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/cv_tag"
android:layout_width="wrap_content"
android:layout_height="@dimen/tag_height"
android:layout_margin="4dp"
android:clickable="true"
app:cardCornerRadius="20dp"
app:cardElevation="2dp">
<FrameLayout
android:id="@+id/fl_selection_indicator"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tv_tag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="8dp"
android:textAppearance="@style/PrimaryWhiteText.Tiny"
tools:text="Hard"/>
</FrameLayout>
</android.support.v7.widget.CardView>
它的渲染效果并不像我预期的那样。看起来系统将此布局包装到具有高程和白色背景的FrameLayout中。有趣的是,如果我将此布局包装到FrameLayout中,我自己的高程消失但白色背景仍然存在(框架布局的背景不是CardView)
如何删除海拔和白色背景以及为什么会发生这种情况?
提前致谢!
答案 0 :(得分:1)
可能是API 21实施前的一个怪癖。
与此同时,您可能根本不需要CardView。考虑使用DrawableResource。
请参阅How do I set the rounded corner radius of a color drawable using xml?
旧回答:
默认情况下,CardView根据您的主题设置背景颜色。 这是样式的免除
<color name="cardview_dark_background">#FF424242</color>
<color name="cardview_light_background">#FFFFFFFF</color>
从视图的初始化
if (a.hasValue(R.styleable.CardView_cardBackgroundColor)) {
backgroundColor = a.getColorStateList(R.styleable.CardView_cardBackgroundColor);
} else {
// There isn't one set, so we'll compute one based on the theme
final TypedArray aa = getContext().obtainStyledAttributes(COLOR_BACKGROUND_ATTR);
final int themeColorBackground = aa.getColor(0, 0);
aa.recycle();
// If the theme colorBackground is light, use our own light color, otherwise dark
final float[] hsv = new float[3];
Color.colorToHSV(themeColorBackground, hsv);
backgroundColor = ColorStateList.valueOf(hsv[2] > 0.5f
? getResources().getColor(R.color.cardview_light_background)
: getResources().getColor(R.color.cardview_dark_background));
}
要更改颜色,请使用app:cardBackgroundColor
属性
答案 1 :(得分:1)
原始答案为here
我的latout用于自定义视图,当我添加setBackgroundColor(ContextCompat.getColor(context,android.R.color.transparent));它的结构高度和白色背景已经消失。