问题是ItemTouchHelper.onChildDraw()
将canvas
作为参数,根据文档,该参数是“RecyclerView正在绘制其子级的画布”。有没有办法从recyclerview
中获取画布?如果执行ItemTouchHelper.onChildDraw(new Canvas()...)
,则会执行代码,但在ViewWholder后面没有绘制任何内容,因为它显然不是recyclerview使用的画布...也许有办法设置一个canvas供recyclerview使用吗?
谢谢你的正手点子。
我解决这一问题的方法是创建一个自定义视图,扩展RecyclerView,并保存android onDraw()生成的canvas对象。然后我可以获取相同的画布,只要我想通过代码手动触发滑动。
public class CanvasRecyclerView extends RecyclerView {
private Canvas mCanvas;
public CanvasRecyclerView(final Context context) { super(context); }
public CanvasRecyclerView(final Context context, @Nullable final AttributeSet attrs) { super(context, attrs); }
@Override public void onDraw(final Canvas c) {
mCanvas = c;
super.onDraw(c);
}
public Canvas getCanvas() {
return mCanvas;
}
}
希望有帮助!
更新
private fun swipeCard(direction: Int) {
val visibleChild = (recyclerView?.layoutManager as LinearLayoutManager).findFirstVisibleItemPosition()
val holder = recyclerView?.findViewHolderForAdapterPosition(visibleChild) ?: return
val dX = if (direction == LEFT) -holder.itemView.width else holder.itemView.width
val translation = SwipeAnimation(dX.toFloat()) //your translation here
translation.setSwipingElements(recyclerView, touchHelper, holder)
emptyView.startAnimation(translation)
}
我试图在RecyclerView中实现一个swipe来解除操作,但当我在ViewHolder中的任何视图上设置OnClickListener时,它将覆盖该视图上的所有OnTouch事件。 我可以放弃OnClickListener而在TouchListener中处理所有单击,但如果在RecycleView的子视图中有多个按钮,那么将会有大量代码,这看起来不是一个正确的方法。 在我的RecyleVie
我正在做一个项目,在这个项目中,我必须调用recyclerview的scolling事件的api来从服务器获取一组新的问题列表。 请引导我,我会感谢你的。
在适配器中 我试过了所有的方法,但是很难从RecolyerView中滑动项目,并且当snackbar的undo被按下时,我希望该项目重新出现。我希望从RecolyerView中滑动项目,并且当项目被滑动时,底部的项目应该向上移动。
我想使用swipe手势(即gmail应用程序)实现recyclerview项目之间的导航。这样,用户就不必返回列表,只需单击下一个项目就可以获得其详细信息视图。我找不到如何实现这一点的教程。
我有viewpager和tablayout,内部viewpager有一个创建RecolyerView片段, 在RecyclerVIew roe项目中,我创建了一个水平滚动视图,用于向左/向右移动, 基本上,我只想滑动屏幕的75%左右,然后显示可滑动视图, 我还使用了的,但它会刷行(100%刷行), 但所有这些都不能正常工作,因为当我们在recyclerview项上滑动时,有时触摸到ViewPage