一种基于Android平台实现RecyclerView网格布局对称的方法技术

技术编号:23671874 阅读:24 留言:0更新日期:2020-04-04 17:28
本发明专利技术涉及Android平台领域,特别涉及一种实现RecyclerView网格布局对称的方法:一、在项目中封装一个继承ItemDecoration的类;二、获取手机屏幕宽度;三、设置RecyclerView并将数据传到适配器;四、在适配器中处理网格宽高问题;五、自定义布局MyLayout类,继承RelativeLayout类;六、重写onMeasure方法,设置宽高相同,item自适应;七、用MyLayout作为其Item控件的最外层布局元素。本发明专利技术解决了Android平台使用RecyclerView网格显示数据时不对称的屏幕适配问题。

A method of implementing recyclerview grid layout symmetry based on Android platform

【技术实现步骤摘要】
一种基于Android平台实现RecyclerView网格布局对称的方法
本专利技术涉及Android平台领域,特别涉及一种实现RecyclerView网格布局对称的方法。
技术介绍
随着Android平台的不断发展,与对外源码的开放,越来越多的开发人员参与到其中,在大家智慧的结晶下,出现了很多比Android官方提供的更优秀、更简洁、更灵活的控件,这些控件把目前市场上大部分主流的功能都进行了封装,使用者只需在项目中进行简单的配置就可使用,而要获得这些控件也比较容易,只需在github上下载即可。这里主要讲述的是RecyclerView控件,在6.0之前大部份基于Andorid的App都是使用Listview来展示数据,而这之后都逐渐被RecyclerView替代,与Listview相比,其灵活性更强,加载速度更快,可以网格展示、流式展示、当然也可列表展示,布局可以列式的也可是横向的。虽然有这么的优点,但想完全将其掌控,还得自己去优化,就如网格展示功能来说,RecyclerView就没有提供宽高这样的属性去配置,实现网格对称的效果。本专利技术通过自定义Layout,覆写其onMeasure方法,重新计算展示内容的真实宽与高,最后做为RecyclerView控件的外包Layout,解决了RecyclerView网格对称的问题。
技术实现思路
本专利技术解决的技术问题在于提供一种基于Android平台实现RecyclerView网格布局对称的方法;本专利技术解决了Android平台使用RecyclerView网格显示数据时不对称的屏幕适配问题。本专利技术解决上述技术问题的技术方案是:一、在项目中封装一个继承ItemDecoration的类;二、获取手机屏幕宽度;三、设置RecyclerView并将数据传到适配器;四、在适配器中处理网格宽高问题;五、自定义布局MyLayout类,继承RelativeLayout类;六、重写onMeasure方法,设置宽高相同,item自适应;七、用MyLayout作为其Item控件的最外层布局元素。所述的方法具体包括如下步骤:步骤一、在项目中封装一个继承ItemDecoration的类,主要是设置表格间的距离;步骤二、获取手机屏幕宽度,主要从WindowManager类中获取;步骤三、将从WindowManager类中获取的数据,通过构造方法设置到RecyclerView的适配器中,并在每网格之间添加分线MyItemDecoration;步骤四、适配器接收到数据,在onBindViewHolder方法中进行处理;步骤五、自定义布局MyLayout类,继承RelativeLayout类,覆写其构造方法;步骤六、重写onMeasure方法,设置宽高相同,item自适应;步骤七、在使用RecyclerView网格做为信息显示时,用MyLayout作为布局的最外层元素,将RecyclerView每个Item包裹在其中。本专利技术的有益效果:通过自定义Layout,覆写其onMeasure方法,重新计算展示内容的真实宽与高,最后做为RecyclerView控件的外包Layout,实现了RecyclerView控件也能对称展示数据的目的。有效地解决了Android平台使用RecyclerView网格显示数据时不对称的屏幕适配问题。附图说明下面结合附图对本专利技术进一步说明:图1为本专利技术的流程图。具体实施方式如图1所示,本专利技术采用如下步骤:步骤一、在项目中封装一个继承ItemDecoration的类,主要是设置表格间的距离;如:publicclassMyItemDecorationextendsRecyclerView.ItemDecoration{privateintspace;publicMyItemDecoration(intspace){this.space=space;}@OverridepublicvoidgetItemOffsets(RectoutRect,Viewview,RecyclerViewparent,RecyclerView.Statestate){//改成使用上面的间隔来设置上下左右间距if(parent.getChildPosition(view)!=-1){outRect.top=space;outRect.left=space;outRect.right=space;outRect.bottom=space;}}}步骤二、获取手机屏幕宽度,主要从WindowManager类中获取;如:privateDisplayMetricsmetrics;WindowManagermanager=MainActivity.this.getWindowManager();metrics=newDisplayMetrics();manager.getDefaultDisplay().getMetrics(metrics);publicintgetScreenWidth(){returnmetrics.widthPixels;}publicintgetScreenHeight(){returnmetrics.heightPixels;}步骤三、将从WindowManager类中获取的数据,通过构造方法设置到RecyclerView的适配器中,并在每网格之间添加分线MyItemDecoration;如:privateintleftRight=15;privateinttopBottom=15;privateintspaceCount=5;publicvoidinitRecyclerView(){recyclerView.setLayoutManager(newGirdLayoutManager(this),3));recyclerAdapter=newRecyclerAdapter(this,datas,leftRight,topBottom,spaceCount);recyclerView.setAdapter(recyclerAdapter);recyclerView.addItemDecoration(newMyItemDecoration(15));}步骤四、适配器接收到数据,在onBindViewHolder方法中进行处理;如:publicvoidonBindViewHolder(ViewHolderviewHolder,finalintpositon){intscreenWith=getScreenWith();intscr本文档来自技高网...

【技术保护点】
1.一种基于Android平台实现RecyclerView网格布局对称的方法,其特征在于:一、在项目中封装一个继承ItemDecoration的类;二、获取手机屏幕宽度;三、设置RecyclerView并将数据传到适配器;四、在适配器中处理网格宽高问题;五、自定义布局MyLayout类,继承RelativeLayout类;六、重写onMeasure方法,设置宽高相同,item自适应;七、用MyLayout作为其Item控件的最外层布局元素;从而本专利技术解决了Android平台使用RecyclerView网格显示数据时不对称的屏幕适配问题。/n

【技术特征摘要】
1.一种基于Android平台实现RecyclerView网格布局对称的方法,其特征在于:一、在项目中封装一个继承ItemDecoration的类;二、获取手机屏幕宽度;三、设置RecyclerView并将数据传到适配器;四、在适配器中处理网格宽高问题;五、自定义布局MyLayout类,继承RelativeLayout类;六、重写onMeasure方法,设置宽高相同,item自适应;七、用MyLayout作为其Item控件的最外层布局元素;从而本发明解决了Android平台使用RecyclerView网格显示数据时不对称的屏幕适配问题。


2.根据权利要求1所述的基于Android平台的一种实现RecyclerView网格布局对称的方法,其特征在于:基于Android平台,自定义layout,在其onMeasure方法中实现宽高相同,在布局文件中做为RecyclerV...

【专利技术属性】
技术研发人员:陈林张来卿庞严冬
申请(专利权)人:珠海横琴盛达兆业科技投资有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1