黑马程序员技术交流社区

标题: 【济南中心】RecyclerView实现特殊布局(二) [打印本页]

作者: 大山哥哥    时间: 2016-8-26 12:17
标题: 【济南中心】RecyclerView实现特殊布局(二)


利用RecyclerView实现特殊布局


  大家都知道竖直方向的GridLayout效果,可以利用GridLayoutManager设置每个条目的跨度来很容易的实现横向占两个跨度的效果,如图:


[AppleScript] 纯文本查看 复制代码
GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 2);
        gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
            @Override
            public int getSpanSize(int position) {
                return position % 3 == 0 ? 2 : 1;
            }
        });


但是竖直方向GridLayout,并且实现竖直方向跨两格的效果似乎有点难度。

我们知道用RecyclerView可以很容易的利用StaggeredGridLayoutManager实现瀑布流的效果。瀑布流就是错落有致。我们实现的思路就是用StaggeredGridLayoutManager来实现这个效果,只是让他错落的有点规律而已。


在Adapter中初始化view的时候,判断当前的位置来动态的设置item的高度:
[AppleScript] 纯文本查看 复制代码
   @Override
        public void onBindViewHolder(ItemHolder holder, int position) {
            if (position % 3 == 0) {
                holder.tv.setHeight(100);
            } else {
                holder.tv.setHeight(49);
            }
            holder.tv.setBackgroundColor(mContext.getResources().getColor(R.color.colorLine));
            holder.setText(mItems.get(position));

        }


设置item高度时,要注意那两个小的item的高度相加并且加上他们中间的距离正好等于大的item的高度
[AppleScript] 纯文本查看 复制代码
public class ConnectorDecoration extends RecyclerView.ItemDecoration {

        public ConnectorDecoration(Context context) {
            super();
        }

        /*
        设置每个item之间的边距
         */
        @Override
        public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
            outRect.set(1, 1, 1, 1);
        }
    }



作者: 橘子哥    时间: 2016-8-26 13:10
非常666
作者: lifuzhe    时间: 2016-8-26 21:49
不错,值得借鉴,加油加油
作者: lifuzhe    时间: 2016-8-27 21:24
不错哦,值得借鉴学习
作者: 济南王昭珽    时间: 2016-8-28 17:23

作者: 王落单    时间: 2016-8-28 22:21
谢谢分享!
作者: 大治    时间: 2016-8-28 23:59
十分感激,zzzzzzzzzzzzzz
作者: qq527389071    时间: 2016-9-1 11:49
看看适配
作者: 大治    时间: 2016-9-1 23:33
哈哈,蛮不错的,赞一个
作者: 漠晓然    时间: 2016-9-2 20:30
11111111111111111111
作者: wh121    时间: 2016-9-24 02:36
进来学习一下
作者: 韩可    时间: 2016-9-28 23:43
键盘敲烂,,月薪过万,加油!
作者: chenzhiyuan    时间: 2019-1-25 14:49
可以下载完整项目么,谢谢
作者: jitashju    时间: 2019-11-28 19:12
1aaaaaaaaaaaaaaaaaa




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2