您好我正在使用recycler view
显示垂直列表,而我正在使用recycler view
的渐变背景。当使用{{1}向左或向右滑动时,我正在删除recycler view
中的项目}}
ItemTouchHelper
这里我正在刷新项目时将回收者视图项目背景更改为浅灰色,但是当回收者视图项目回到空闲状态时我想要原始背景,即我想要那个渐变背景。 Recylerview xml文件:
ItemTouchHelper.SimpleCallback simpleCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT|ItemTouchHelper.RIGHT) {
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
mRecyclerAdapter.removeStock(viewHolder.getAdapterPosition());
}
@Override
public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
if(actionState!=ItemTouchHelper.ACTION_STATE_IDLE){
viewHolder.itemView.setBackgroundColor(Color.LTGRAY);
}
}
};
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleCallback);
itemTouchHelper.attachToRecyclerView(recyclerView);
可绘制文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/gradient_background"
tools:context=".ui.StockFragment"
tools:showIn="@layout/activity_main">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:scrollbars="none"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</RelativeLayout>
答案 0 :(得分:5)
也许你可以在onSelectedChanged()
内尝试。或者,也许您可以覆盖clearView()
并在调用超类方法后进行更改。
修改强>
在阅读了更多文档之后,我现在认为onSelectedChanged()
是更改背景的正确位置,当项目开始刷和时它返回空闲状态。检查viewHolder
是否为空,然后检查actionState
更改后台的内容。
我认为onChildDraw()
不适合这样做,因为它已经处于绘图阶段并且更改视图的背景可能会导致另一次重绘。