具有多个行和列的Recycler视图 - AutoFit,如Flow Layout [Android]

Ren*_*ery 14 android layout-manager flowlayout gridlayoutmanager android-recyclerview

我正在构建一个像这样的布局的挑战:

在此输入图像描述

我的第一个见解是使用带有适配器的RecyclerView,该适配器可以处理每个项目并使其布局膨胀.

到目前为止,还不是那么好.

到目前为止我有这个布局:

在此输入图像描述

我可以感觉到我几乎就在那里,但是真的......我花了一个星期思考如何让它变得更好,或者就像UI提出的那样.

我的一些尝试是

  1. 使用网格布局并根据列表中的项目数更改最大列数
  2. StaggeredGridLayoutManager听起来像是一个强大的候选者来修复它并让我开心,但不幸的是,当我尝试使用它时,我意识到我们需要在构造函数上传递一些spanCount(列),我找到了一些方法来解决这个限制,改变了每行的列数,但我不喜欢最终结果,不像我在Foursquare等其他应用中看到的那样设置您的兴趣.
  3. 我查看了这个库Flow Layout,但我甚至没有开始使用它,因为我不想失去整个回收器的视图功能,我相信有一种方法可以使它工作!.....即使知道图书馆完全符合我的需要.

伙计们,我不是在这里寻找一些已经完成的代码安静或者有人来完成我的工作.其实我正在寻找隧道尽头的灯光.

Har*_*rdy 5

您好,如果您不想使用recyclerview,还有另一个使用自定义库的示例,其行为类似于List GitHubLibrary TagLayout

  • 示例代码:

    mFlowLayout.setAdapter(new TagAdapter<String>(mVals)
       {
           @Override
           public View getView(FlowLayout parent, int position, String s)
           {
               TextView tv = (TextView) mInflater.inflate(R.layout.tv,
                       mFlowLayout, false);
               tv.setText(s);
               return tv;
           }
       });
    
    Run Code Online (Sandbox Code Playgroud)

使用以下代码,您可以预先设置所需的选择:

mAdapter.setSelectedList(1,3,5,7,8,9);
Run Code Online (Sandbox Code Playgroud)

将显示如下结果: -

在此输入图像描述