摘要:内部没有帮我们实现的方法,不过帮我们实现了,我们可以通过自定义一个支持的。
RecycleView内部没有帮我们实现ScrollTo的方法,不过帮我们实现了ScrollBy,我们可以通过ScrollBy自定义一个支持scrollTo的RecycleView。
public class ScrollToRecyclerView extends RecyclerView { //记录滚动的总距离,类似view中的mScrollX和mScrollY private int sx = 0, sy = 0; //自己定义的滚动监听接口 public interface RecyclerScrollChangeListener{ void ScrollChange(int y); } private RecyclerScrollChangeListener mScrollListener = null; public ScrollToRecyclerView(Context context) { super(context); addScrollListener(); } public ScrollToRecyclerView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); addScrollListener(); } public ScrollToRecyclerView(Context context, @Nullable AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); addScrollListener(); } //重写scrollTo方法,通过内部的scrollBy实现scrollTo的功能 @Override public void scrollTo(int x, int y) { super.scrollTo(x, y); //计算滚动的相对距离,通过传进来的x和当前的sx差值就是scrollBy需要滚动的值 scrollBy(x - sx, y - sy); } //添加view的scrolllistener,在view滚动时根据滚动的距离自己计算sx,sy private void addScrollListener(){ addOnScrollListener(new OnScrollListener() { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { // oldsx = sx; // oldsy = sy //因为dx和dy是相对上次的滚动距离,所以通过一开始的累加可以得到总的sx和sy sx += dx; sy += dy; super.onScrolled(recyclerView, dx, dy); //此处如果有需要监听滚动变化的话在这回调 if(mScrollListener != null){ mScrollListener.ScrollChange(sy); } } }); } //设置监听 public void setRecyclerScrollListener(RecyclerScrollChangeListener scrollListener) { this.mScrollListener = scrollListener; } }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/2769.html
摘要:以前一直用,因为可以搞定绝大部分需求。如果只用做透明的分割线,复写就可以实现了。列表本身如果对分割线的不敏感,复写就可以。阴影是子打在父上的子必须设置父必须比子稍大一些,父不要用,在子上用属性 RecycleView 以前一直用ListView,因为ListView可以搞定绝大部分需求。最近项目UI做了很大调整,需要宽度不同的Item混排,记录一下遇到的问题。类似这样效果 showIm...
这是一个系列,我们将其命名为android最佳实践,如果你还没有看之前的文章: Android最佳实践(一) android最佳实践(二) android最佳实践(四) android最佳实践(五) Android最佳实践(六)之扫描二维码模块 现阶段,我们创建了最简单的Android项目,现在在此公布github链接https://github.com/neuyu/android-best-pr...
摘要:大家都知道,想给设置分割线可以重写项目过程中,遇到一个需求顶部有一条灰色的间隔,我想到了给设置分割线的方法,当然只给第一个设置,而且在上方。结果出现了一个现象,顶部分割线一直停留在顶部,不会跟着移动。大家都知道,想给RecycleView设置分割线可以重写RecyclerView.ItemDecoration 项目过程中,遇到一个需求:RecycleView顶部有一条灰色的间隔,我想到了给R...
转载请标明出处,维权必究:https://www.cnblogs.com/tangZH/p/10116095.html 我们为了移除RecycleView的某一项,会用RecycleView的notifyItemRemoved(int position)方法,但是需要注意的是:1、用该方法之后并不会刷新Item,也就是说不会重新bind数据,那么position也就没有刷新,每个Item对应的po...
showImg(https://segmentfault.com/img/bVs7T5); 其实实现这种效果有两种方法: View.startDrag(), 然后给需要监听拖拽的控件setOnDragListener. ItemTouchHelper,这种实现方法更为简单,具体可参考链接描述 这里我是用的第一种方法,因为感觉第二种方法已经烂大街了。。况且第二种方法只能在RecycleView...
阅读 768·2021-11-22 09:34
阅读 2118·2021-09-27 13:35
阅读 3740·2021-09-22 16:03
阅读 4974·2021-09-22 15:40
阅读 2122·2021-09-09 09:33
阅读 1010·2021-09-06 15:02
阅读 749·2019-08-30 15:53
阅读 1883·2019-08-29 15:35