Установка размера диапазона в одной строке в StaggeredGridLayoutManager
У меня есть шахматная сетка с двумя столбцами. Это работает. То, что я хочу, находится в позиции 0 для строки, проходящей через 2 столбца. Я сделал это, прежде чем довольно легко использовать GridLayoutManger так:
mGridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
return position == 0 ? 2 : 1;
}
});
StaggeredGridLayoutManager не предоставляет мне такую функциональность, как GridLayoutManager.
Есть ли другой способ сделать это? Я искал, но не нашел никого с той же проблемой, что удивительно, так как я думаю, что эта функциональность была бы очень полезна для моего сценария и для бесконечной прокрутки, когда ProgressBar отображается в последней строке RecyclerView.
Ответы
Ответ 1
Вы можете использовать метод setFullSpan.
Таким образом, элемент будет компоноваться с использованием всей области пролета.
Это означает, что если ориентация вертикальная, вид будет иметь полную ширину; если ориентация горизонтальная, вид будет иметь полную высоту.
Что-то вроде этого:
public final void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
StaggeredGridLayoutManager.LayoutParams layoutParams = (StaggeredGridLayoutManager.LayoutParams) viewHolder.itemView.getLayoutParams();
layoutParams.setFullSpan(true);
}
Обратите внимание.
Он поддерживает представления, которые охватывают все столбцы, но этого должно быть достаточно для вашего случая.