我正在尝试覆盖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
中衡量儿童?
答案 0 :(得分:1)
这2种方法有不同的签名,所以你不应该有任何问题覆盖它们。根据您为子类中的函数指定的参数,将调用相应的super。
但是,您需要修改从GridLayoutManager扩展的子类,以覆盖使用GridLayoutmanager的measureChild
实现的所有函数,以便能够使用其他实现。
要检查哪些方法在GridLayoutManager中调用measureChild
,您可以查看source
编辑:似乎从LinearLayoutManager派生的layoutChunk
方法是包私有的,所以在这种情况下,我想唯一的方法是扩展RecyclerView.LayoutManager
并复制整个代码GridLayoutManager用您自己的替换替换measureChild
调用,相应地修改代码