A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始



利用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);
        }
    }

游客,如果您要查看本帖隐藏内容请回复

13 个回复

正序浏览
1aaaaaaaaaaaaaaaaaa
回复 使用道具 举报
chenzhiyuan 来自手机 中级黑马 2019-1-25 14:49:54
13#
可以下载完整项目么,谢谢
回复 使用道具 举报
键盘敲烂,,月薪过万,加油!
回复 使用道具 举报
wh121 中级黑马 2016-9-24 02:36:57
11#
进来学习一下
回复 使用道具 举报
11111111111111111111
回复 使用道具 举报
哈哈,蛮不错的,赞一个
回复 使用道具 举报
看看适配
回复 使用道具 举报
大治 中级黑马 2016-8-28 23:59:58
7#
十分感激,zzzzzzzzzzzzzz
回复 使用道具 举报
谢谢分享!
回复 使用道具 举报
回复 使用道具 举报
不错哦,值得借鉴学习
回复 使用道具 举报
不错,值得借鉴,加油加油
回复 使用道具 举报
非常666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马