编辑:真正的问题是我LinearLayout被另一个布局包裹,导致不正确的行为.Sanvywell接受的答案有一个更好,更完整的例子,说明如何在刷卡视图下绘制颜色,而不是我在问题中提供的代码片段.
现在,在ItemTouchHelper类的帮助下,RecyclerView小部件本身支持行扫描,我试图在应用程序中使用它,行的行为与Google的收件箱应用程序类似.也就是说,向左侧滑动执行一个动作,向右滑动则执行另一个动作.
使用ItemTouchHelper.SimpleCallback的onSwiped方法很容易实现动作本身.但是,我无法找到一种简单的方法来设置应该出现在当前正在刷卡的视图下方的颜色和图标(例如在谷歌的收件箱应用程序中).
要做到这一点,我试图覆盖ItemTouchHelper.SimpleCallback的onChildDraw方法,如下所示:
@Override
public void onChildDraw(Canvas c, RecyclerView recyclerView,
RecyclerView.ViewHolder viewHolder, float dX, float dY,
int actionState, boolean isCurrentlyActive) {
RecyclerViewAdapter.ViewHolder vh = (RecyclerViewAdapter.ViewHolder) viewHolder;
LinearLayout ll = vh.linearLayout;
Paint p = new Paint();
if(dX > 0) {
p.setARGB(255, 255, 0, 0);
} else {
p.setARGB(255, 0, 255, 0);
}
c.drawRect(ll.getLeft(), ll.getTop(), ll.getRight(), ll.getBottom(), p);
super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive); …Run Code Online (Sandbox Code Playgroud) android android-layout android-canvas android-support-library android-recyclerview
android ×1