57

是否可以使用在 Android 上创建类似 pinterest 的布局GridView?我想使用创建图片库,GridView但我不确定它是否是好的解决方案。我不想创建三个LinearLayouts(我认为这个解决方案不好:Pinterest style listview or gridview in android

有任何想法吗 ;)?

在此处输入图像描述

4

7 回答 7

25

我也一直在玩这个(使用LinearLayout),但最后我在内存消耗方面遇到了很多问题(特别是当我不得不重新加载项目时)。我选择了使用两个同步ListViews的简单解决方案。这样我可以利用内部缓存,这很有帮助。为此,我必须使用同步列表的OnTouchListenerOnScrollListener 。这是一个例子:

https://github.com/vladexogija/PinterestListView

在此处输入图像描述

于 2012-09-21T08:32:23.200 回答
22

创建布局如下

<ScrollView...>
<LinearLayout....
   android:id="@+id/linear1"
   orientation="horizontal">

   <LinearLayout....
     android:id="@+id/linear2"
     android:layout_weight="0.33"
     orientation="vertical">

   <LinearLayout....
     android:id="@+id/linear3"
     android:layout_weight="0.33"
     orientation="vertical">

   <LinearLayout....
     android:layout_weight="0.33"
     orientation="vertical">

</LinearLayout>
</ScrollView>

现在ImageView在布局中动态添加

linear1 = (LinearLayout) findViewById(R.id.linear1);
linear2 = (LinearLayout) findViewById(R.id.linear2);
linear3 = (LinearLayout) findViewById(R.id.linear3);

for(int i=0;i<n;i++)
{
   ImageView iv = new ImageView(this);
   iv.setImageResource(R.id.icon);

   int j = count % 3;  <---- 
   if(j==0)
       linear1.addView(iv);
   else if(j==1)
       linear2.addView(iv);
   else
       linear3.addView(iv); 
}

输出:

在此处输入图像描述

于 2012-07-31T09:12:11.353 回答
7

对于这个问题的最近访问者,我建议使用RecyclerView with StaggedGridLayoutManager。它具有足够的功能和灵活性。

于 2015-05-13T07:00:57.033 回答
6

用于同步滚动 2 个 ListView 的独立助手:https ://gist.github.com/yanchenko/6179793

于 2013-01-24T10:05:53.593 回答
3

我正在使用这个库:https ://github.com/huewu/PinterestLikeAdapterView 。

它工作得很好。我唯一的问题是setOnItemClickListenerandsetOnItemLongClickListener有点错误,所以我直接在 convertView 上设置了侦听器。

于 2013-08-09T03:29:08.953 回答
2

该库来自 Etsy 应用程序: https ://github.com/etsy/AndroidStaggeredGrid

于 2014-01-03T13:03:51.673 回答