登录 立即注册
安币:
楼主: 码农创新者
打印 上一主题 下一主题

重庆时时彩倍投技巧| RecyclerView通过GridLayoutManager实现多样式布局的示例,grid view

[复制链接]
跳转到指定楼层
楼主
发表于 2018-3-12 12:37:08 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本文来源:http://www.oneupabq.com/a/www.douguo.com/

重庆时时彩独胆倍投 www.oneupabq.com,  为了给游客准备腊八粥,后厨天不亮就忙活了。一年来,我市有针对性地开展了10余项重点改革督察,对督察中发现的问题列出清单、明确责任、限定时间、挂账整改,做到改革部署到哪里,督察工作就跟进到哪里,全面打通改革“最后一公里”,使每一项改革都取得预期成效、解决实际问题。


            

        一、开篇

        距离上次写文章已经有段时间了,说实话真不知道最近在忙些什么,现在沉下心来把最近项目中遇到的问题记录下来便于以后遇到中使用吧!

        废话不多说,先看一下效果图

        


        二、需求解析

        1、先说下项目需求,不管是好评还是差评下边的tag标签有不同的展示类型,有的字数多的会单独占一行处理(这边其实也可以扩充,比如说两三个字的可以一行显示三个tag标签),第一眼看到这个需求准备使用网上的开源库taglayout去实现,但是尝试了一下后发现其实他们实现的效果同项目要的效果还是有蛮大差距的,可以看到效果图里边是要求文字是居中对齐的,左右对称的。

        2、想到使用gridview实现这个功能,定义adapter去实现没问题,问题是什么时候显示一行什么时候显示两行三行并不能确定,毕竟有时候服务端返回的没有类型标示只有tag_name和tag_id,你要根据什么设置类型呐,而且自从recyclerview之后现在要是还用gridview的话岂不是太落伍了。下边就重点介绍一下使用recyclerview实现如图效果。

        三、功能实现

        我们知道recyclerview实现gridview效果只需配置一下参数就行了

[Java] 查看源文件 复制代码
  gridlayoutmanager layoutmanage = new gridlayoutmanager(getcontext(), 2);
  recycerview.setlayoutmanager(layoutmanage);

        可以看到gridlayoutmanager需要传递两个参数,一个是上下文对象,另一个是一行显示几列的参数常量,既然这个常量可以指定那么是不是这个值可以去控制呐,答案当然是yes

        我们会注意到gridlayoutmanager里边有个setspansizelookup方法,本篇的重点就是这个方法(这个方法具体意义大家可以网上搜索,会有很多相关介绍,以及通过它实现一些复杂的布局,再次不做过多讨论)

[Java] 查看源文件 复制代码
   layoutmanage.setspansizelookup(new gridlayoutmanager.spansizelookup() {
         @override
         public int getspansize(int position) {
           return 0;
         }
       });

        其实getspansize返回值就是控制每行有几列的,根据这个思路我们不妨试试。因为recyclerview填充数据是根据adapter实现的,我们就把给adapter的数据源同样在setspansizelookup这个方法里边判断一下不就行了吗?
根据这个思路于是有了下面的代码

[Java] 查看源文件 复制代码
    /**
     * 如果单个item显示的字数大于指定某个值就显示一列 默认2列
     */

     //设置item数据大于多少字只显示一行 默认 超过九个字的程度只显示一列

     private static final int max = 9;

    private int setspansize(int position, list<tagbean> listentities) {
      int count;
      if (listentities.get(position).gettag_name().length() > max) {
        count = 2;
      } else {
        count = 1;
      }

      return count;
    }

    layoutmanage.setspansizelookup(new gridlayoutmanager.spansizelookup() {
               @override
               public int getspansize(int position) {
                 return setspansize(position,list);
               }
             });

        核心代码就这么多,我们可以根据自己的需求随意定制样式

        最后奉上源码地址:https://github.com/lygttpod/androidcustomview



        
分享到:  QQ好友和群 QQ空间 微信
收藏收藏 支持支持 反对反对

0

主题

8916

帖子

2995

安币

Android大神

Rank: 6Rank: 6

沙发
发表于 2018-3-12 21:11:13 | 只看该作者
支持楼主,支持安卓巴士!

0

主题

8925

帖子

2987

安币

Android大神

Rank: 6Rank: 6

板凳
发表于 2018-3-13 05:12:22 | 只看该作者
不错不错,楼主辛苦了。。。

428

主题

622

帖子

5710

安币

手工艺人

地板
发表于 2018-3-13 16:34:31 | 只看该作者
感谢分享,安卓巴士有你更精彩:lol

459

主题

645

帖子

1965

安币

手工艺人

5#
发表于 2018-3-14 11:56:51 | 只看该作者
感谢大神~

400

主题

581

帖子

1856

安币

手工艺人

6#
发表于 2018-3-15 15:36:33 | 只看该作者
感谢分享,安卓巴士有你更精彩:lol
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站长推荐

通过邮件订阅最新安卓weekly信息
上一条 /4 下一条

下载安卓巴士客户端

全国最大的安卓开发者社区
联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

重庆时时彩独胆倍投广告投放| 下载客户端|申请友链|手机版|站点统计|重庆时时彩独胆倍投 ( 粤ICP备15117877号 )

快速回复 返回顶部 返回列表
小说 小说 小说 小说 小说 小说
小说 小说 小说 小说 小说 小说
小说 小说 小说 小说 小说 小说
幸运飞艇预测软件 重庆幸运农场开奖历史 幸运飞艇-聚彩 北京赛车pk10彩票控 北京pk10计划软件
幸运农场历史开奖 重庆幸运农场茄子 重庆幸运农场时间 北京赛车pk10迪士尼 北京赛车计算方法如下