gpt4 book ai didi

Android:如何实现具有不同列/行大小的网格

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:14:46 32 4
gpt4 key购买 nike

我需要实现这样的东西:

enter image description here

看起来像 StaggeredGridLayoutManager | GridLayoutManager 做不到,目前如何实现?

GridView 性能好?

最佳答案

您可以使用 twoway-view 实现这种 RecyclerView 行为

我测试了这个库的 1.0.0-SNAPSHOT 版本。

这是一个老项目(不再维护),但它可以帮助您编写自己的 RecyclerView/LayoutManager。

布局示例

在 RecyclerViewAdapter 中你需要设置 span 逻辑:

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
super.onBindViewHolder(holder, position);
final SpannableGridLayoutManager.LayoutParams lp =
(SpannableGridLayoutManager.LayoutParams) holder.itemView.getLayoutParams();

final int span1;
final int span2;
if (position == 0) {
span1 = 2;
span2 = 2;
} else if (position == 3) {
span1 = 2;
span2 = 3;
} else {
span1 = 1;
span2 = 1;
}

final int colSpan = (span2);
final int rowSpan = (span1);

if (lp.rowSpan != rowSpan || lp.colSpan != colSpan) {
lp.rowSpan = rowSpan;
lp.colSpan = colSpan;
holder.itemView.setLayoutParams(lp);
}
}

我使用了库中的自定义 RecyclerView (TwoWayView):

<org.lucasr.twowayview.widget.TwoWayView
android:id="@+id/fragment_drawer_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="60dp"
android:clipToPadding="false"
android:paddingBottom="32dp"
app:twowayview_layoutManager="SpannableGridLayoutManager"
app:twowayview_numColumns="3"
app:twowayview_numRows="3" />

结果截图: result screenshot

关于Android:如何实现具有不同列/行大小的网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38569868/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com