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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始



利用RecyclerView实现特殊布局

Screenshot_20160826-113057.png

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

Screenshot_20160826-115834.png

[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 个回复

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