如何在CardView上使用?android:attr / selectableItemBackground时修改默认颜色?

时间:2016-05-27 04:33:19

标签: android android-studio android-appcompat android-cardview

这是我在CardView上的代码:

<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/tools"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/item_home_device_card_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:foreground="?android:attr/selectableItemBackground"
android:clickable="true"
card_view:cardCornerRadius="@dimen/cardview_default_radius"
card_view:cardElevation="@dimen/card_elevation_raised"
card_view:cardUseCompatPadding="true"
card_view:contentPadding="@dimen/padding_card">

...
</android.support.v7.widget.CardView>

我没有任何改变默认颜色的线索,请帮帮我。 提前谢谢。

2 个答案:

答案 0 :(得分:0)

您可以通过定义自己的选择器drawable来更改它。以下是selectableItemBackground的内容。创建一个新的可绘制资源文件并将此选择器放入其中,并根据需要进行更改。

<selector xmlns:android="http://schemas.android.com/apk/res/android"
          android:exitFadeDuration="@android:integer/config_mediumAnimTime">

    <item android:state_window_focused="false" android:drawable="@color/transparent" />

    <!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. -->
    <item android:state_focused="true"  android:state_enabled="false" android:state_pressed="true" android:drawable="@drawable/list_selector_background_disabled" />
    <item android:state_focused="true"  android:state_enabled="false"                              android:drawable="@drawable/list_selector_background_disabled" />
    <item android:state_focused="true"                                android:state_pressed="true" android:drawable="@drawable/list_selector_background_transition" />
    <item android:state_focused="false"                               android:state_pressed="true" android:drawable="@drawable/list_selector_background_transition" />
    <item android:state_focused="true"                                                             android:drawable="@drawable/list_selector_background_focused" />
    <item android:drawable="@color/transparent" />

</selector>

答案 1 :(得分:0)

在您的代码中,

android:foreground="?android:attr/selectableItemBackground"

占用默认颜色。如果您想要修改自定义颜色,请使用自定义绘图并将其包含在您的cardview中,如下所示。

<android.support.v7.widget.CardView 
    xmlns:card_view="http://schemas.android.com/apk/res-auto" 
    android:clickable="true" 
    android:foreground="@drawable/custom_bg"/>

对于您在上面的代码中可以看到的custom_bg,您必须在drawable包中定义一个xml文件。因此,在预棒棒糖设备上,您将获得稳定的点击效果,在棒棒糖及以上设备上,您将对具有指定自定义背景的cardview产生连锁反应。