当前位置: 首页 > news >正文

建个人免费网站用哪个手机版网站开发人员选项

建个人免费网站用哪个,手机版网站开发人员选项,扫码进网页怎么制作,短视频seo公司RecyclerView滚动到指定位置并置顶 RecyclerView本身提供了几个定位的方法#xff0c;除了手动滑动的scrollTo#xff0c;smootScrollTo和scrollBy#xff0c;smoothScrollBy方法之外#xff0c;有一个直接滑动到指定位置item的scrollToPosition方法和另一个在此基础上平滑…RecyclerView滚动到指定位置并置顶 RecyclerView本身提供了几个定位的方法除了手动滑动的scrollTosmootScrollTo和scrollBysmoothScrollBy方法之外有一个直接滑动到指定位置item的scrollToPosition方法和另一个在此基础上平滑滚动的smoothScrollToPosition方法。但是经实验该方法只能保证指定位置的item滑动到屏幕可见如果指定的item本来就已在屏幕可见范围则不会滑动并且屏幕外的item滑到可见范围后还需手动置顶。 常见处理方式 看了网上大多数相关的博客一般的处理都是将item区分为 在可见范围以上/在可见范围内/在可见范围以下 三种情况分别进行处理。 1、item在第一个可见item之前直接用smoothScrollToPosition则当该item移动到可见范围时它就在RecyclerView顶部 2、item在可见范围内即在第一个可见item之后最后一个可见item之前那么这时scrollToPosition失效需要手动计算该item的view距离顶部的距离用scrollBy自行移动到置顶位置 3、item在最后一个可见item之后用smoothScrollToPosition滑动到可见范围 (此时该item在最后一个位置)再获取该item的view计算到顶部距离再监听RecyclerView的滑动对其进行二次滑动到顶部 贴上该方法主要的实现代码 //标记是否需要二次滑动private boolean shouldMove;//需要滑动到的item位置private int mPosition;/*** RecyclerView滑动到指定item函数*/private void smoothMoveToPosition(RecyclerView recyclerView, final int position) {// 获取RecyclerView的第一个可见位置int firstItem recyclerView.getChildLayoutPosition(recyclerView.getChildAt(0));// 获取RecyclerView的最后一个可见位置int lastItem recyclerView.getChildLayoutPosition(recyclerView.getChildAt(mRecyclerView.getChildCount() - 1));if (position firstItem) {// 指定item在第一个可见item之前recyclerView.smoothScrollToPosition(position);} else if (position lastItem) {// 指定item在可见范围内即在第一个可见item之后最后一个可见item之前int position position - firstItem;if (position 0 position recyclerView.getChildCount()) {// 计算指定item的view到顶部的距离int top recyclerView.getChildAt(position).getTop();// 手动滑动到顶部recyclerView.smoothScrollBy(0, top);}} else {// 指定item在最后一个可见item之后用smoothScrollToPosition滑动到可见范围// 再监听RecyclerView的滑动对其进行二次滑动到顶部recyclerView.smoothScrollToPosition(position);mPositon position;shouldMove true;}}…………/*** 监听RecyclerView的滑动对需要进行二次滑动的item进行滑动**/mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {Overridepublic void onScrollStateChanged(RecyclerView recyclerView, int newState) {super.onScrollStateChanged(recyclerView, newState);if ( shouldMove RecyclerView.SCROLL_STATE_IDLE newState) {shouldMove false;smoothMoveToPosition(mRecyclerView, mPosition);}}});本文推荐的另外一种处理方式 通过上面的代码可以看出来这种处理方式比较麻烦而且处理逻辑需要分成两块并不够直观。因此点开源码发现实际上RecyclerView在用smoothScrollToPosition函数时是创建了一个LinearSmoothScroller 再继续点开看 一进入文件就发现了SNAP_TO_START这个参数注释意思是将子view与父view左对齐或顶部对齐其中是左对齐还是顶部对齐是根据LayoutManager是horizontal还是vertical决定因此重写LinearSmoothScroller设置该参数即可实现置顶。 public class TopSmoothScroller extends LinearSmoothScroller {TopSmoothScroller(Context context) {super(context);}Overrideprotected int getHorizontalSnapPreference() {return SNAP_TO_START;}Overrideprotected int getVerticalSnapPreference() {return SNAP_TO_START; // 将子view与父view顶部对齐} }之后获取RecyclerView的LayoutManager调用startSmoothScroll即可 final TopSmoothScroller mTopScroller new TopSmoothScroller(this); mTopScroller.setTargetPosition(position); mRecyclerView.getLayoutManager.startSmoothScroll(mTopScroller);
http://www.zqtcl.cn/news/444147/

相关文章:

  • 上海市建设咨询协会网站asp网站源码
  • 大家都在哪些网站上做医药招商wordpress po文件
  • 国外主题网站兰州app
  • 建设项目自主验收公示网站dedecms英文外贸网站企业模板下载
  • 做网站要服务器吗前端企业网站开发
  • 用html写一个个人介绍多网站怎么做seo
  • 做网站打广告犯法吗中国建设投资集团 网站首页
  • 怎么免费申请个人网站职业技能培训有哪些
  • 小型的企业网站湖南备案网站建设方案书
  • 现在做网站公司seo怎么做教程
  • asp化妆品网站windows优化大师有必要安装吗
  • 网站流量分析系统制作图片网站
  • 做网站技术路线广州番禺发布公众号
  • 企业网站自己可以做吗服装网站建设的利益分析
  • 网站做软件居众装饰集团有限公司
  • 南山网站制作联系电话芒果国际影城星沙店
  • 珠海网站设计费用建企业版网站多久
  • linux 网站搬家wordpress 卸载plugin
  • 江苏省建设厅网站 投诉编辑网站的软件手机
  • 深圳地图各区分布图seo网络优化师就业前景
  • 北京网站备案代理国家企业信用信息公示系统广东
  • 推销网站重庆网站优化公司哪家便宜
  • 外贸公司网站搭建礼品网站建设
  • 网站建设 今晟网络中国制造网官网登录
  • 东莞网站设计如何常州做网站设计
  • php网站数据库修改网站备案有必要吗
  • 电商会学着做网站呢WordPress又拍云cdn
  • 网站健设推广产品多少钱网站规划有什么意义
  • 诚信网站备案中心内江网站建设新闻
  • 品牌形象网站有哪些百度应用中心