如何在Lollipop手机上的点击事件中更改CardView的蓝色

时间:2015-02-24 22:06:59

标签: android android-5.0-lollipop android-appcompat android-cardview

我设置了CardView,在其中我放了RelativeLayout。

布局看起来像这样:

<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/row_basket_list_card_view"
android:orientation="horizontal"
android:layout_width="match_parent"
android:clickable="true"
android:layout_margin="5dp"
card_view:cardCornerRadius="@dimen/basket_list_cardview_corner_radius"
card_view:cardElevation="@dimen/basket_list_cardview_elevation"
card_view:cardUseCompatPadding="true"
android:layout_height="match_parent">

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="?android:attr/selectableItemBackground">

...

当我在Lollipop手机上点击CardView时,我会得到一个很好的涟漪效果,每个人都很开心。但是,当我在Lollipop手机上点击那个CardView时,它只会变成一些蓝色的半透明颜色。它看起来还不错,但我想改变那种颜色。

我该怎么做?

最佳,

Deveti

1 个答案:

答案 0 :(得分:1)

您可以使用

android:background="?attr/selectableItemBackground"

获得浅灰色而不是蓝色。然后它使用App的主题,这可能是你案例中的AppCompat主题。

如果您想要完全控制,我担心您必须创建自己的state list并覆盖selectableItemBackground或创建新项目。

链接示例:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
          android:drawable="@drawable/button_pressed" /> <!-- pressed -->
    <item android:state_focused="true"
          android:drawable="@drawable/button_focused" /> <!-- focused -->
    <item android:state_hovered="true"
          android:drawable="@drawable/button_focused" /> <!-- hovered -->
    <item android:drawable="@drawable/button_normal" /> <!-- default -->
</selector>

drawable也可以是RippleDrawable。您可以使用文件夹&#34; drawable&#34;对于默认选择drawable和&#34; drawable-21&#34;对于涟漪效果可绘制。有关概述,请参阅this answer

如果您使用android:foreground,它的行为就像叠加层,因此像#20000000这样的透明黑色会产生灰色。