0

StaggeredGridLayoutManager を持つ RecyclerView があります。問題は、フルスパン要素の前に、埋める必要のあるギャップがあり、最後の 2 つの要素の高さを増減することです。問題の写真:

ここに画像の説明を入力

  • 必要な列は 2 つだけです。
  • グリッドの要素は、異なる高さを持つことができます。

各要素の高さを使用して 2 つの列の高さを計算しようとしています。最後にどちらの列が長いかを確認し、最も短い列に高さを追加しますが、新しい高さを設定する安全な場所がどこにあるのかわかりません. ビューの高さが確実にわかったら、それを描画します。

私はこの問題で何日も立ち往生しています。どんな提案も大歓迎です!

4

1 に答える 1

0

onBindViewHolder

double positionHeight = getPositionRatio(position);
  holder.img_event).setHeightRatio(positionHeight);
 private double getPositionRatio(final int position) {
        double ratio = sPositionHeightRatios.get(position, 0.0);
        // if not yet done generate and stash the columns height
        // in our real world scenario this will be determined by
        // some match based on the known height and width of the image
        // and maybe a helpful way to get the column height!
        if (ratio == 0) {
            ratio = getRandomHeightRatio();
            sPositionHeightRatios.append(position, ratio);
            Log.d("'", "getPositionRatio:" + position + " ratio:" + ratio);
        }
        return ratio;
    }
private final Random mRandom = new Random();

    private double getRandomHeightRatio() {
        return (mRandom.nextDouble() / 2.0) + 1.0; // height will be 1.0 - 1.5 the width
    }
于 2016-08-18T10:58:31.447 に答える