我有一个使用自定义适配器和自定义项目布局的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>
答案 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属性,可以给你带来理想的效果。