我一直在搜索如何为RecycleView中的项获取"点击/触摸反馈"这样的点击动画。
我可以看到视图中的项目,但当我按下/点击它们时没有真正的反应。我有一个缩小版的这个项目:
有人知道如何为RecycleView中的项获取点击动画吗?
我一直在搜索如何为RecycleView中的项获取"点击/触摸反馈"这样的点击动画。
我可以看到视图中的项目,但当我按下/点击它们时没有真正的反应。我有一个缩小版的这个项目:
有人知道如何为RecycleView中的项获取点击动画吗?
这很容易做到。在为RecycleView
的每一行充气的视图的布局文件中,将顶级视图设置为可点和可聚焦。然后,将该视图的背景设置为?android:attr/selectableItemBackground
。根据您发布的GitHub项目,看起来您为每一行充气的视图是item_demo_01.xml
。因此,该布局现在将类似于这样:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container_list_item"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:focusable="true"
android:background="?android:attr/selectableItemBackground">
<include layout="@layout/common_item_layout" />
</RelativeLayout>
//this goes in your recyclerView adapter....
/**
* View holder for workouts
*/
public static class MyViewHolder extends RecyclerView.ViewHolder {
// each data item is just a string in this case
public TextView mTitleView;
public TextView mTView1;
public View homeView;
public MyViewHolder(View itemLayoutView) {
super(itemLayoutView);
this.homeView = itemLayoutView;
this.mTitleView = (TextView) itemLayoutView.findViewById(R.id.workoutItemTitleText);
this.mTView1 = (TextView) itemLayoutView.findViewById(R.id.workoutItemWorkoutSets);
homeView.setOnClickListener(new ON)
}
}
//other code.....
@Override
public void onBindViewHolder(WorkoutViewHolder viewHolder, int position) {
viewHolder.mTView1.setText("");
viewHolder.mTitleView.setText("");
//pass the position to the view in the onclick listener
viewHolder.homeView.setId(position);
viewHolder.homeView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//this list item has been clicked, do something. maybe use an interface or something to notify your activity/fragment.
}
});
}
//the rest of your code.....
在onBindViewHolder方法中,您可以为该视图实现动画逻辑,并将其传递给活动或片段。只需为您的recyclerview适配器创建自定义接口,并创建一个像setMyOnItemClickListener(new MyOnItemClickListener)
这样的方法。然后,在单击项目时,通知您的自定义接口并执行某些操作。
android:clickable="true"
android:focusable="true"
android:foreground="?android:attr/selectableItemBackground"
使用foreground而不是background。因为在我的情况下,有一个带有自己不透明背景的textview位于LinearLayout内部。