【问题标题】:Google+ Android grid widget for tablet tutorial适用于平板电脑的 Google+ Android 网格小部件教程
【发布时间】:2012-09-08 10:34:39
【问题描述】:

我想在 Android 中构建一个异构网格小部件,就像用于平板电脑或 Pinterest 的 Google+ 等应用程序一样。我找不到任何教程,而且似乎特别困难。

不幸的是GridView 只能有相同大小的单元格,而我想获得不同大小的单元格。你能指点我任何好的教程吗?我只知道必须扩展AbsListView

【问题讨论】:

    标签: android android-layout gridview google-plus pinterest


    【解决方案1】:

    根据项目高度的可变性,您有几个选择:

    1. 如果您希望创建具有多种高度变化的 GridView(例如 Pinterest),您应该使用 StaggeredGridView - 据我所知,这是最好的开源解决方案现在。

    2. 在您发布的图片中,看起来好像有具有可变高度子级的父行 - 这是一个稍微容易解决的问题,可以通过使用常规 ol' ListView 和 @987654324 的子类来模仿@。写出这个代码对于一个 SO 答案来说太复杂了,但我会概述一下我如何实现这个效果。

      • BaseAdapter 必须提前确定每一行的粗略布局,以便它可以向列表视图报告它需要多少行 - 您需要覆盖 getCount()
      • 在适配器的getView() 中,您将膨胀一个LinearLayout(或者如果它已被回收,则可能使用convertView)并添加尽可能多的孩子(同样,更多LinearLayouts),因为您需要的宽度设备(您应该在运行时弄清楚这一点,除非您只想创建手机和平板电脑版本)。
      • 添加到行的每个子 LinearLayout 应设置为 weight=1,以便它们伸展到父行的整个宽度。在您发布的屏幕截图中,有 3 列(第三个 id 被截断)。
      • 您刚刚添加到行中的每个子 LinearLayout 代表一列。您应该将它们的方向设置为垂直,因为它们是列!
      • 在每一列中,如果您要添加一个子项,您将拥有一个网格视图。
      • 如果您希望达到上述效果,您可以在每列中添加更多项目。
      • 例如,第 1 行第 1 列有一个大子项。第 1 行中的第 2 列和第 3 列都有 2 个半高子项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多