Android异构gridview像pinterest?

rad*_*zio 57 java android pinterest

是否有可能在Android上创建类似布局的pinterest GridView?我想创建图库使用,GridView但我不确定它是不是很好的解决方案.我不想创建三个LinearLayouts(我认为这个解决方案不好:Android中的Pinterest样式listview或gridview)

有任何想法吗 ;)?

在此输入图像描述

vla*_*ija 25

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

https://github.com/vladexologija/PinterestListView

在此输入图像描述

  • 你去吧 还有很多事情要做(修复一些错误,优化,简化......)但这个版本运行正常.最重要的是它使用回收! (3认同)

MAC*_*MAC 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>
Run Code Online (Sandbox Code Playgroud)

现在添加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); 
}
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

  • 我知道这是可能的,但我不想使用LinearyLayout因为视图回收不好.此解决方案不适用于许多图像视图. (31认同)
  • 它是否运行快速而没有内存消耗问题? (2认同)

Moh*_*ohK 7

对于最近访客对这个问题,我建议使用RecyclerViewStaggedGridLayoutManager.它具有足够的功能和灵活性.


yan*_*nko 6

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