每行中具有动态项目数的 GridView

GridView with dynamic number of items in each row

我正在尝试实现一个 gridview,其中每行中的项目数不同,具体取决于每个项目的宽度。我希望它看起来像 Medium 应用程序中的那个,如下所示:

我怎样才能做到这一点?

您可以通过两种主要方式解决问题:

  1. ScrollViewLinear- 或 RelativeLayout 一起使用。然后您将在代码中添加项目,测量每个项目并在需要时将它们放入新行。这将需要创建一些逻辑,但这是可以实现的。如果内容超过屏幕高度,ScrollView 将负责滚动。此解决方案的问题是您将没有回收机制,当列表变长时可能会导致内存问题。

  2. 使用RecyclerView! :-D RecyclerView 最棒的功能之一是,在提供项目列表的标准 Adapter-based 概念的同时,它还允许您实现自定义 LayoutManager。创建您自己的 LayoutManager 实现,它根据测量的项目定位项目,您就完成了,RecyclerView 会为您滚动和回收项目! :-D 这需要一些时间来适应,特别是如果你没有使用 RecyclerView 的经验,但整个过程应该不会超过几个小时,而且在我看来,这真的很值得。

您可以自由选择,但第二种方法更现代,而且通常更容易实施。一般来说,你应该学会使用 RecyclerView,一旦你掌握了它,它会比旧的 List- 和 GridViews 更有帮助并且实施起来更快。