Android разнородный gridview как pinterest?
Можно ли создать pinterest как макет на Android с помощью GridView
? Я хочу создать галерею изображений с помощью GridView
, но я не уверен, что это хорошее решение. Я не хочу создавать три LinearLayouts
(я думаю, что это решение не очень хорошо: Список просмотров в стиле Pinterest или gridview в android)
Любые идеи;)?
![enter image description here]()
Ответы
Ответ 1
Создайте макет, как показано ниже.
<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);
}
выход:
![enter image description here]()
Ответ 2
Я тоже играл с этим (использовал LinearLayout), но в конце у меня было много проблем с потреблением памяти (особенно когда мне приходилось перезагружать элементы). Я остановился на простом решении, которое
использует два синхронизированных ListViews. Таким образом, я могу использовать внутреннее кэширование , которое очень помогает.
Для этого мне пришлось использовать OnTouchListener и OnScrollListener, которые синхронизируют списки.
Вот пример:
https://github.com/vladexologija/PinterestListView
![enter image description here]()
Ответ 3
Некоторые полезные библиотеки для реализации вида сетки в виде Pinterest:
Ответ 4
Отдельный помощник для синхронизации прокрутки из 2 списков: https://gist.github.com/yanchenko/6179793
Ответ 5
Для недавних посетителей этого вопроса я бы предложил использовать RecyclerView
с StaggedGridLayoutManager
. Он обладает более чем достаточными функциями и гибкостью.
Ответ 6
Я использую этот lib: https://github.com/huewu/PinterestLikeAdapterView.
Это работает очень хорошо. Единственная проблема, с которой я столкнулась, заключается в том, что setOnItemClickListener
и setOnItemLongClickListener
немного ошибочны, поэтому я устанавливаю прослушиватели непосредственно в convertView.
Ответ 7
Эта библиотека поступает из приложения Etsy:
https://github.com/etsy/AndroidStaggeredGrid