Я хочу построить сетку, подобную той, что находится в приложении Pinterest на Android.
Я начал расширять AdapterView<ListAdapter>
но я не могу заставить много работать (например, эффект overscroll), поэтому, отказавшись от идеи продлить AbsListView
, теперь я начинаю думать, что лучше расширить ListView
и переопределить layoutChildren()
метод.
Как вы думаете?
благодаря
Мы не будем нуждаться в какой-либо внешней библиотеке для этого, так как собственный RecyclerView от Android позволяет реализовать макет кладки Pinterest просто путем изменения Менеджера макета RecyclerView
mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL)); RecyclerAdapter adapter = new RecyclerAdapter(this); mRecyclerView.setAdapter(adapter);
Круто. Это очень легко, но маржа на моем LinearLayout, похоже, не работает. Итак, вот краткое решение.
SpacesItemDecoration decoration = new SpacesItemDecoration(16); mRecyclerView.addItemDecoration(decoration);
SpacesItemDecoration class:
public class SpacesItemDecoration extends RecyclerView.ItemDecoration { private final int mSpace; public SpacesItemDecoration(int space) { this.mSpace = space; } @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { outRect.left = mSpace; outRect.right = mSpace; outRect.bottom = mSpace; // Add top margin only for the first item to avoid double space between items if (parent.getChildAdapterPosition(view) == 0) outRect.top = mSpace; } }
Пример ссылки Github
Я решил это, копируя и обновляя Android StaggeredGridView. https://github.com/maurycyw/StaggeredGridView . Кажется, отлично работает для создания эффекта, который вы ищете. До этого я спустился по кроличьей норе, чтобы скопировать исходный код Android в отдельную библиотеку (которую я получил), пока не увидел теперь экспериментальный StaggeredGridView. Это намного проще, чем мой старый проект библиотеки BrickView, поэтому я заменил его.
AntipodalWall – это автономная библиотека, предназначенная для создания так называемой «макетной» сетки для Android (как приложение Pinterest).
Проверьте этот проект AntipodalWall
В моих проектах я использую: https://github.com/GDG-Korea/PinterestLikeAdapterView
Это очень легко использовать, и это эффективное потребление памяти