安卓:4.1.2上Cardview背景变成黑色

17

我正在使用谷歌的 cardView 支持库来实现我的卡片功能。它在 KitKat 及之后版本中运行良好,但是在 4.1.2 设备上,卡片的背景被设置为黑色,并且填充/边距不被应用。

<android.support.v7.widget.CardView
        android:id="@+id/all_goals_card_view"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_marginRight="20dp"
        android:layout_marginLeft="20dp"
        android:layout_gravity="center"
        android:layout_marginTop="20dp"
        android:layout_marginBottom="20dp"
        android:padding="10dp"
        app:cardCornerRadius="4dp"
        card_view:cardPreventCornerOverlap="false"
        card_view:cardBackgroundColor="@android:color/white"
        >
 </android.support.v7.widget.CardView>

你有正确的答案吗?我也遇到了同样的问题。请帮忙。 - Shiv
@Shiv 我现在支持 Android 4.4 及以上版本。 - Sutirth
6个回答

44

好的,我刚刚遇到了同样的问题,发现一些设备有一些"特殊"的非常浅的主题默认值咳嗽三星咳嗽。我会回答这个稍微有点老的问题。

问题在于,您很可能正在使用错误的context来填充布局。我认为您正在使用application-context这个context。但是,应用程序上下文不适用您定义的主题。

这种情况(使用应用程序上下文填充布局)是合法的,但是将使用您运行的系统上的默认主题来进行填充,而不是您应用程序中定义的主题*。

例如,如果您执行以下操作:

LayoutInflater.from(context).inflate(R.layout.menu_rental_list_item, parent, false);

这里的context应该是一个ActivityFragment中的Context,而不是应用程序上下文。

请务必仔细检查。

*) 哦,你想了解更多关于上下文的信息吗?请继续阅读这里


@Langusten Gustel 非常感谢。又是另一种三星特有的奇怪行为,“唉……” - Lev
你好,亲爱的,我认为我的问题是一样的。你能看一下吗? - john
https://stackoverflow.com/questions/56750943/android-toolbar-color-is-turning-to-blue-when-come-from-fragment - john

7
不要使用 "@android:color/white"。
card_view:cardBackgroundColor="#fff"

仍然输出相同,没有任何区别。 - Sutirth
@Sutirth,请同时更改卡片视图内任何相对或线性布局的背景颜色。 - Muhammad Hamza Shahid
@MuhammadHamzaShahid,Simple已经停止支持这些版本了 :P - Sutirth
5
不过我使用了app:cardBackgroundColor="#fff"。谢谢。 - M D P
有人能给我解释一下 #fff 和 @android:color/white(即 #ffffffff)之间的区别吗? - Massimo
显示剩余3条评论

3
这将解决问题:
      <android.support.v7.widget.CardView
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:background="#fff"
        card_view:cardBackgroundColor="#fff"
        android:layout_margin="2dp">

请注意以下几行代码:
xmlns:card_view="http://schemas.android.com/apk/res-auto"

and 

card_view:cardBackgroundColor="#fff"

1

我在安卓4.1.2设备上遇到了同样的问题。我在CardView中使用了带有形状可绘制的ImageView,这是实际的罪魁祸首。

请查看这个链接中的答案,它帮助我解决了这个问题。


1
在我的情况下,我将android:theme="@style/Theme.AppCompat.Light.NoActionBar"放置在清单文件中与相关活动有关的部分。

0
不要使用

标签。

android:Theme.Dialog

或者

android.R.style.Theme_Dialog

如果您的CardView是DialogFragment或Dialog布局的一部分。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接