Подтвердить что ты не робот

Установка размера диапазона в одной строке в StaggeredGridLayoutManager

У меня есть шахматная сетка с двумя столбцами. Это работает. То, что я хочу, находится в позиции 0 для строки, проходящей через 2 столбца. Я сделал это, прежде чем довольно легко использовать GridLayoutManger так:

                mGridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
                    @Override
                    public int getSpanSize(int position) {
                        return position == 0 ? 2 : 1;
                    }
                });

StaggeredGridLayoutManager не предоставляет мне такую ​​функциональность, как GridLayoutManager.

Есть ли другой способ сделать это? Я искал, но не нашел никого с той же проблемой, что удивительно, так как я думаю, что эта функциональность была бы очень полезна для моего сценария и для бесконечной прокрутки, когда ProgressBar отображается в последней строке RecyclerView.

4b9b3361

Ответ 1

Вы можете использовать метод setFullSpan.
Таким образом, элемент будет компоноваться с использованием всей области пролета.

Это означает, что если ориентация вертикальная, вид будет иметь полную ширину; если ориентация горизонтальная, вид будет иметь полную высоту.

Что-то вроде этого:

public final void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {

    StaggeredGridLayoutManager.LayoutParams layoutParams = (StaggeredGridLayoutManager.LayoutParams) viewHolder.itemView.getLayoutParams();
    layoutParams.setFullSpan(true);
}

Обратите внимание.
Он поддерживает представления, которые охватывают все столбцы, но этого должно быть достаточно для вашего случая.