2013-06-10 1 views
2

Каковы некоторые способы сделать вертикальное расстояние между видами одинаковым, как показано на рисунке ниже?Android BaseAdapter Pinterest style

(То, что я) enter image description here

(Что мне нужно) enter image description here

Я пытался играть с высоты LinearLayout, что я надуть для каждого из них " плитки ", но, похоже, не может понять этого.

+0

хорошо, так что андроид-макет и JQuery не то же технологии. android-layout относится к элементам XML в родном приложении, а jquery не будет в родном приложении. Итак, что вы строите? – cbrulak

+0

Как показано на скриншоте того, что у меня есть, я создаю собственное приложение для Android. Я понимаю, что ответ, который я ищу, не будет включать импорт jQuery ... Поскольку jQuery Masonry (плагин) достигает того же эффекта, что и я, я бы предположил, что любой, кто знает, как масонство достигает этого стиля Pinterest, быть в состоянии помочь мне. –

+0

да, так что это было не очевидно на снимке экрана, иначе я бы не попросил вас разъяснений. Во-вторых, как это делает jQuery-плагин, в javascript не будет точно переноситься на android в java. Если вам действительно нужна помощь, я предлагаю вам опубликовать код и, возможно, короткий список вещей, которые вы пробовали. – cbrulak

ответ

6

Вы можете проверить эту библиотеку. Это в бета-состоянии:

AntipodalWall

Web

+1

прокрутка в этой библиотеке очень медленная. –

1

Мы не будем нуждаться в какой-либо внешней библиотеки для этого, как родной RecyclerView Android, делает реализацию раскладку кладки Pinterest просто путем изменения Layout Manager в 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:

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 link of example

my final Results