web-dev-qa-db-ja.com

StaggeredGridLayoutManagerでの単一行のスパンサイズの設定

2列のスタッガードグリッドがあります。これは機能しています。私が望むのは、行が2つの列にまたがる位置0にあります。 GridLayoutMangerを非常に簡単に使用する前に、これを実行しました。

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

StaggeredGridLayoutManagerは、GridLayoutManagerのようにこの機能を提供しません。

これを行う別の方法はありますか?私は検索しましたが、同じ問題のある人は見つかりませんでした。この機能は、RecyclerViewの最後の行にProgressBarが表示されている場合、この機能が私のシナリオと無限スクロールに非常に役立つと思います。

26
Daniel Julio

setFullSpan メソッドを使用できます。
この方法では、アイテムはすべてのスパン領域を使用してレイアウトされます。

つまり、向きが垂直の場合、ビューは全幅になります。向きが水平の場合、ビューは最大の高さになります。

このようなもの:

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

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

注意を払う。
すべての列にまたがるビューをサポートしますが、あなたのケースには十分なはずです。

74