57

を使用して Android で pinterest のようなレイアウトを作成することはできますGridViewか? を使用して画像ギャラリーを作成したいのですGridViewが、それが良い解決策かどうかわかりません。3つ作成したくありませんLinearLayouts(この解決策は良くないと思います:AndroidのPinterestスタイルのリストビューまたはグリッドビュー

何か案は ;)?

ここに画像の説明を入力

4

7 に答える 7

25

私もこれで遊んでいます(LinearLayoutを使用)が、最後にメモリ消費に多くの問題がありました(特にアイテムをリロードする必要がある場合)。2 つの同期されたListViewsを使用する単純なソリューションに落ち着きました。このようにして、非常に役立つ内部キャッシュを活用できます。これを行うには、リストを同期するOnTouchListenerOnScrollListenerを使用する必要がありました。次に例を示します。

https://github.com/vladexologija/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 に答える
21

Pinterest のようなグリッド ビューを実装するための便利なライブラリ:

于 2013-09-18T10:18:51.937 に答える
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

それはかなりうまくいきます。私が持っている唯一の問題は、setOnItemClickListenersetOnItemLongClickListenerが少しバグがあることです。そのため、convertView に直接リスナーを設定します。

于 2013-08-09T03:29:08.953 に答える