0

setSpanSizeLookupbyを使用してこのタイプのレイアウトを作成しようとしていGridLayoutManagerます。

アイテムの幅を計算してアイテムを自動調整し、画像のように自動調整する方法を知っている人はいますか?

何か別の方法があれば、私に提案してください。

ここにいくつかのコードがあります:

int maxWidth = 1040; // device width
mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
    @Override
    public int getSpanSize(int position) {
        LayoutInflater vi = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
        View v = vi.inflate(R.layout.row_favorite, null);
        final TextView textView = (TextView) v.findViewById(R.id.tv_name);
        int itemWidth = (int) (textView.getPaint().measureText(favoriteList.get(position).getName()));

        if ((maxWidth / 2) / 3 > itemWidth) {
            return 1;
        } else if ((maxWidth / 2) / 3 < itemWidth && maxWidth / 3 > itemWidth) { 
            return 2;
        } else if (maxWidth / 2 > itemWidth && maxWidth / 3 < itemWidth) {
            return 3;
        }
    }
});

画像をご確認ください

4

2 に答える 2

1

私たちには今の選択肢がありFlexboxLayoutます。

レイアウトについては、

<com .google.android.flexbox.flexboxlayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:flexwrap="wrap">

動的ハンドル用のレイアウトマネージャーもありますrecyclerView

FlexboxLayoutManager layoutManager = new FlexboxLayoutManager();

楽しみ..!!

于 2017-09-07T10:37:26.323 に答える
0

フレックスボックスの依存関係を追加

「com.google.android:flexbox:0.3.1」をコンパイルします

そしてFlexboxLayoutManagerを設定します

    FlexboxLayoutManager layoutManager = new FlexboxLayoutManager(context);
    layoutManager.setFlexDirection(FlexDirection.ROW);
    layoutManager.setJustifyContent(JustifyContent.CENTER);
    recyclerview.setLayoutManager(layoutManager);
于 2017-10-05T11:13:27.497 に答える