android.support.v7.cardview:cardBackgroundColor不起作用

时间:2016-03-25 08:27:00

标签: android android-cardview

我在资源文件中有以下XML代码,它代表RecyclerView中的项目:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:android.support.v7.cardview="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android.support.v7.cardview:cardBackgroundColor="#9e9e9e"
    android.support.v7.cardview:cardElevation="7dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@android:color/transparent"
            android:orientation="vertical">
            <ImageView
                android:id="@+id/type"
                android:layout_width="15dp"
                android:layout_height="15dp"
                android:layout_gravity="end" />
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
                <TextView
                    android:id="@+id/field_name"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:padding="2dp"
                    android:textColor="#000000"
                    android:textSize="20sp"
                    android:typeface="monospace" />
                <LinearLayout
                    android:layout_width="15dp"
                    android:layout_height="match_parent" />
            </LinearLayout>
            <LinearLayout
                android:id="@+id/main_recyclerview_item_actions"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="end"
                android:visibility="gone">
                <Button
                    android:id="@+id/delete"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/delete"
                    android:textColor="@color/colorAccent"
                    style="@style/Widget.AppCompat.Button.Borderless"/>
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>
</android.support.v7.widget.CardView>

问题是CardView永远不会得到颜色:9e9e9e,如下图所示: 颜色是白色而不是9e9e9e

enter image description here

代码中的问题在哪里?我该如何解决这个问题?

4 个答案:

答案 0 :(得分:3)

只需删除cardBackgroundColor属性,然后将android:background="#9e9e9e"设置为布局中的第一个LinearLayout。我的意思是这样:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:android.support.v7.cardview="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android.support.v7.cardview:cardElevation="7dp">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#9e9e9e"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/transparent"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/type"
            android:layout_width="15dp"
            android:layout_height="15dp"
            android:layout_gravity="end" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/field_name"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:padding="2dp"
                android:textColor="#000000"
                android:textSize="20sp"
                android:typeface="monospace" />

            <LinearLayout
                android:layout_width="15dp"
                android:layout_height="match_parent" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/main_recyclerview_item_actions"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="end"
            android:visibility="gone">

            <Button
                android:id="@+id/delete"
                style="@style/Widget.AppCompat.Button.Borderless"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="DELETE"
                android:textColor="@color/colorAccent" />
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

答案 1 :(得分:1)

尝试删除

android.support.v7

并仅设置

card_view:cardBackgroundColor="#9e9e9e"

希望能帮到你!

答案 2 :(得分:0)

app:cardBackgroundColor="@color/cv_bgcolor" 

为我工作。

答案 3 :(得分:-1)

您可以修改此代码,如:

android.support.v7.cardview:cardBackgroundColor="@color/myColor"

然后转到Strings.xml文件夹并添加以下行:

<color name="myColor">#e9e9e9</color>