700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > android 区域交错 android - 自动调整交错GridLayoutManager - 堆栈内存溢出

android 区域交错 android - 自动调整交错GridLayoutManager - 堆栈内存溢出

时间:2023-07-05 08:42:06

相关推荐

android 区域交错 android - 自动调整交错GridLayoutManager - 堆栈内存溢出

但对于交错 GridLayoutManager。 我试图从这个很好的答案中编辑代码:

public class StaggeredGridAutofitLayoutManager extends StaggeredGridLayoutManager {

private int mColumnWidth;

private boolean mColumnWidthChanged = true;

public StaggeredGridAutofitLayoutManager(Context context, int columnWidth, int orientation) {

/* Initially set spanCount to 1, will be changed automatically later. */

super(1, orientation);

setColumnWidth(checkedColumnWidth(context, columnWidth));

}

private int checkedColumnWidth(Context context, int columnWidth) {

if (columnWidth <= 0) {

/* Set default columnWidth value (48dp here). It is better to move this constant

to static constant on top, but we need context to convert it to dp, so can't really

do so. */

columnWidth = (int) TypedValue.applyDimension(PLEX_UNIT_DIP, 48,

context.getResources().getDisplayMetrics());

}

return columnWidth;

}

public void setColumnWidth(int newColumnWidth) {

if (newColumnWidth > 0 && newColumnWidth != mColumnWidth) {

mColumnWidth = newColumnWidth;

mColumnWidthChanged = true;

}

}

@Override

public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) {

if (mColumnWidthChanged && mColumnWidth > 0) {

int totalSpace;

if (getOrientation() == VERTICAL) {

totalSpace = getWidth() - getPaddingRight() - getPaddingLeft();

} else {

totalSpace = getHeight() - getPaddingTop() - getPaddingBottom();

}

int spanCount = Math.max(1, totalSpace / mColumnWidth);

setSpanCount(spanCount);

mColumnWidthChanged = false;

}

super.onLayoutChildren(recycler, state);

}

}

但是应用程序因以下错误而崩溃:

RecyclerView正在计算布局或滚动时无法调用此方法

(链接到line => setSpanCount(spanCount) );

有人可以帮助我进行此修改吗?

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。