海拔和statelistanimator不使用recyclerview列表项目

时间:2017-04-14 07:34:10

标签: android material-design

我有一个使用自定义适配器和自定义项目布局的recyclerview。 我需要知道将提升应用于recyclerview的标准是什么。 是要应用于recyclerview本身或项目布局的高程。

我还需要定义statelistanimator以在选择项目时启用高程变化。 我应该在哪里设置statelistanimator,到recyclerview或项目布局?

我尝试了几种方法来实现这一目标。但是当我运行应用程序时没有任何作用。 当我将高程和statelistanimator设置为项目布局时,我可以在设计时看到高程效果。但是当我运行应用程序时,recyclerview中的项目列表中没有任何内容。

如果我做错了或不遵守标准,请帮助我。

这是我试过的源代码,

RES \布局\ list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:elevation="4dp"
    android:stateListAnimator="@animator/state_list"
    android:background="#3F51B5"
    android:padding="5dp"
    android:clipToPadding="false">


            <TextView
                android:id="@+id/tv_item"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Sample Item"
                android:textSize="18sp"
                android:textColor="#ffffff"
                android:padding="5dp">

            </TextView>



</RelativeLayout>

RES \布局\ activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

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



</RelativeLayout>

RES \动画\ state_list.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <objectAnimator
            android:propertyName="translationZ"
            android:valueTo="8dp"
            android:valueType="floatType">

        </objectAnimator>
    </item>

    <item android:state_pressed="false">
        <objectAnimator
            android:propertyName="translationZ"
            android:valueTo="4dp"
            android:valueType="floatType">

        </objectAnimator>

    </item>
</selector>

2 个答案:

答案 0 :(得分:0)

为什么不尝试使用CardView?

<android.support.v7.widget.CardView android:id="@+id/item_card"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    app:cardCornerRadius="2dp"
    app:cardUseCompatPadding="true"
    app:cardElevation="2dp"
    app:cardBackgroundColor="@color/md_white_1000"
    android:foreground="?android:attr/selectableItemBackground"
    android:clickable="true">

         <TextView
                android:id="@+id/tv_item"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Sample Item"
                android:textSize="18sp"
                android:textColor="#ffffff"
                android:padding="5dp">

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

答案 1 :(得分:0)

将cardview用作RecyclerviewList项目。 Card View example

它有app:cardElevation属性,可以给你带来理想的效果。