美文网首页
RecyclerView 非spanCount偶数倍item的居

RecyclerView 非spanCount偶数倍item的居

作者: 邻山有木 | 来源:发表于2019-01-22 18:21 被阅读0次

    最近项目有个需求,大致就是:需要将列表中item居中

    最终效果.jpg

    接下来自然是百度:setSpanSizeLookup,这个方法决定item占据了多少列宽。

    SpanCount:每行的列数,就是下图GridLayoutManager的第二个参数
    spanSize:item所占的列数

    如:我每行最多两列,我需要第三个item占据一行,那么我就判断当position等于2时,spanSize为SpanCount,我占据的列数等于总列数,那么这个item就占据一行了

    上代码

      final GridLayoutManager layoutManager = new GridLayoutManager(this, 2);
        layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
            @Override
            public int getSpanSize(int position) {
    
                int spanSize = 0;
                //spanSize的长度为item所占的列数,最终的spanSize为spanCount/spanSize,结果才是真正的spanSize
                if (mUserinfo.getData().size() == 3) {
                    spanSize = position == 2 ? layoutManager.getSpanCount() : 1;
                    Log.d(TAG, "getSpanSize: " + spanSize);
                }
                return spanSize;
            }
        });
        layoutManager.setAutoMeasureEnabled(true);
        recyclerView.setLayoutManager(layoutManager);
    
        ArrayList<xxx> dataBeans = new ArrayList<>();
        int userSize = mUserinfo.getData().size();
        for (int i = 0; i < userSize; i++) {
            ...
        }
    
        Adapter adapter = new Adapter(R.layout.adapter_match_head, dataBeans);      
        recyclerView.setAdapter(adapter);
    

    然鹅:他仍然是这个样子的

    IMG_20190122_174258.jpg

    木得法子,继续百度,然后找到了 这个

    这个方法需要在设置Adapter之后才会启用,否则是无效的,so,只需要将上方代码的setAdapter方法移至 layoutManager.setSpanSizeLookup上方就OJBK了,图就不贴了,第一张图就是最终的结果图,还有啥问题可以留言或者直接联系我,至于现在,我要下班了哈哈哈

    相关文章

      网友评论

          本文标题:RecyclerView 非spanCount偶数倍item的居

          本文链接:https://www.haomeiwen.com/subject/fvdrjqtx.html