没有在Android Lollipop CardView上获得Ripple效果

时间:2017-02-18 17:15:09

标签: android android-5.0-lollipop

我试图在卡片视图中获得涟漪效果,我通过添加Android开发者页面https://developer.android.com/training/material/animations.html中描述的android:background属性来实现它,但我没有得到涟漪效果,那么我将属性改为android:foreground,如https://stackoverflow.com/a/26975714/6866139中给出的那样我仍然没有得到涟漪效果是我的XML代码

<?xml version="1.0" encoding="utf-8"?>
    <android.support.v7.widget.CardView
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        card_view:cardBackgroundColor="@color/cardview_light_background"
        card_view:cardElevation="3dp"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:id="@+id/card_view"
        android:clickable="true"
        android:background="?android:attr/selectableItemBackground"
        android:layout_margin="@dimen/password_list_item_card_view_layout_margin">


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

                <TextView
                    android:layout_width="48dp"
                    android:layout_height="48dp"
                    android:id="@+id/logo_text_holder"
                    android:layout_marginTop="12dp"
                    android:layout_marginStart="12dp"
                    android:textColor="@color/colorPrimaryDark"
                    android:background="@drawable/circle"
                    android:paddingTop="8dp"
                    android:textSize="24sp"
                    android:textAlignment="center" />

                <LinearLayout
                    android:orientation="vertical"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_marginStart="16dp"
                    android:layout_marginTop="8dp">

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:id="@+id/name_holder"
                        android:textColor="@color/colorPrimaryDark"
                        android:textSize="24sp" />

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:id="@+id/email_holder"
                        android:textColor="@color/colorPrimaryDark"
                        android:textSize="14sp"/>
                </LinearLayout>
            </LinearLayout>
    </android.support.v7.widget.CardView> 

有没有办法实现它,请帮助我 在此先感谢

1 个答案:

答案 0 :(得分:0)

我在childView的{​​{1}}内有同样的问题,而不是CardView使用android:layout_width="match_parent"

,如下面的代码:

android:layout_width="wrap_content"

触摸提升动画,在<android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="wrap_content" app:cardBackgroundColor="@color/green" android:foreground="?attr/selectableItemBackground" android:background="?attr/selectableItemBackground" android:stateListAnimator="@animator/lift_on_touch" android:focusable="true" android:clickable="true" app:cardPreventCornerOverlap="false" app:cardUseCompatPadding="true"> <TextView android:id="@+id/notification_details_med_close" android:layout_width="wrap_content" android:padding="10dp" android:layout_gravity="center" android:layout_height="wrap_content" android:background="@color/green" android:text="CARDVIEW" android:textAppearance="?android:textAppearanceLarge" android:textColor="@android:color/white" /> </android.support.v7.widget.CardView> 文件夹中创建动画资源文件lift_on_touch

animator-v21

这将有助于CardView的材料设计效果。

注意: <?xml version="1.0" encoding="utf-8"?> <!-- animate the translationZ property of a view when pressed --> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="true" android:state_pressed="true"> <set> <objectAnimator android:duration="@android:integer/config_shortAnimTime" android:propertyName="translationZ" android:valueTo="16dp" android:valueType="floatType"/> </set> </item> <item> <set> <objectAnimator android:duration="@android:integer/config_shortAnimTime" android:propertyName="translationZ" android:valueTo="0" android:valueType="floatType"/> </set> </item> </selector> 适用于API 21及更高版本。