我试图覆盖measureChild
中的GridLayoutManager
以在测量中使用特定的布局参数。但是GridLayoutManager
有自己的measureChild
私有实现:
private void measureChild(View view, int otherDirParentSpecMode, boolean alreadyMeasured)
如果我在
measureChild
中覆盖public RecyclerView.LayoutManager
:@Override
public void measureChild(View child, int widthUsed, int heightUsed) {
super.measureChild(child, widthUsed, heightUsed);
}
它将永远不会被调用。
是否可以在
GridLayoutManager
中测量儿童? 最佳答案
这两种方法具有不同的签名,因此覆盖它们应该没有任何问题。根据您在子类中为函数指定的参数,将调用适当的super。
但是,您需要修改从GridLayoutManager扩展的子类,以覆盖使用GridLayoutmanager的measureChild
实现的所有函数,以便能够使用其他实现。
要检查GridLayoutManager中调用measureChild
的方法,可以查看source
编辑:好像从LinearLayoutManager派生的layoutChunk
方法是包私有的,因此在这种情况下,我想唯一的方法是扩展RecyclerView.LayoutManager
并复制GridLayoutManager的整个代码,用您自己的替换替换measureChild
调用来修改代码适当地