平板电脑教程的Google+ Android网格小部件

Mat*_*ska 6 android gridview android-layout google-plus pinterest

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

在此输入图像描述

不幸的是GridView,当我想要获得不同尺寸的细胞时,只能有相同大小的细胞.你能指点我任何好的教程吗?我只知道我必须延伸AbsListView.

klm*_*prt 0

根据物品高度的变化程度,您有以下几种选择:

  1. 如果您想要做一个GridView具有多种高度变化的项目(例如 Pinterest),您应该使用StaggeredGridView - 据我所知,它是目前最好的开源解决方案。

  2. 在您发布的图像中,看起来好像存在具有可变高度子项的父行 - 这是一个稍微容易解决的问题,并且可以通过使用常规 ol'ListViewBaseAdapter. 对于这样的答案来说,为此编写代码太过复杂,但我将向您概述如何实现此效果。

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