15

我面临构建这样的布局的挑战:

在此处输入图像描述

我的第一个见解是使用带有适配器的 RecyclerView 可以处理每个项目并扩大其布局。

到目前为止,不太好。

到目前为止,我得到了这个布局:

在此处输入图像描述

我可以感觉到我快到了,但真的......我花了一周时间思考如何让它变得更好,或者就像 UI 建议的那样。

我的一些尝试是

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

伙计们,我不是在这里寻找一些已经完成的代码和平或有人来做我的工作。实际上,我正在寻找隧道尽头的光。

4

3 回答 3

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

使用下面的代码,您可以预设您想要的选择:

mAdapter.setSelectedList(1,3,5,7,8,9);

将显示如下结果:-

在此处输入图像描述

于 2015-11-17T12:35:35.697 回答
4

使用包含一个名为Chips的组件的新谷歌材料设计库很容易做到这一点。所以你不必使用 RecyclerView。

芯片代表小块中的复杂实体,例如联系人。它是一个圆形按钮,由标签、可选芯片图标和可选关闭图标组成。如果可以选中,则可以单击或切换筹码。

如何使用组件:

1.导入库

implementation 'com.google.android.material:material:1.1.0'

2.使用下面的代码

 <com.google.android.material.chip.ChipGroup
      android:layout_width="match_parent"
      android:layout_height="wrap_content">

 <!-- Your items here -->

     <com.google.android.material.chip.Chip
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="Item 1"/>

     <com.google.android.material.chip.Chip
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="Item 2"/>

     <com.google.android.material.chip.Chip
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="Item 3"/>

 <!-- End -->

</com.google.android.material.chip.ChipGroup>

您可以在此处找到更多详细信息:材料组件

于 2019-03-28T19:06:27.603 回答
0

现在可能为时已晚,但你也可以使用 google 的FlexBoxLayout

演示

于 2019-04-25T14:18:44.383 回答