在GridLayoutManager中测量子项

时间:2017-04-24 07:02:42

标签: android android-recyclerview gridlayoutmanager

我正在尝试覆盖measureChild中的GridLayoutManager,以便在测量中使用特定的布局参数。但GridLayoutManager有自己的measureChild私有实现:

private void measureChild(View view, int otherDirParentSpecMode, boolean alreadyMeasured)

如果我覆盖measureChild中的公开RecyclerView.LayoutManager

@Override
public void measureChild(View child, int widthUsed, int heightUsed) {
    super.measureChild(child, widthUsed, heightUsed);
}

永远不会被召唤。

是否可以在GridLayoutManager中衡量儿童?

1 个答案:

答案 0 :(得分:1)

这2种方法有不同的签名,所以你不应该有任何问题覆盖它们。根据您为子类中的函数指定的参数,将调用相应的super。

但是,您需要修改从GridLayoutManager扩展的子类,以覆盖使用GridLayoutmanager的measureChild实现的所有函数,以便能够使用其他实现。

要检查哪些方法在GridLayoutManager中调用measureChild,您可以查看source

编辑:似乎从LinearLayoutManager派生的layoutChunk方法是包私有的,所以在这种情况下,我想唯一的方法是扩展RecyclerView.LayoutManager并复制整个代码GridLayoutManager用您自己的替换替换measureChild调用,相应地修改代码