RecyclerView.LayoutManager不显示视图

时间:2017-02-21 15:35:10

标签: android android-layout android-recyclerview

我决定为我的LayoutManager使用自定义RecyclerView。不幸的是,当我将它设置为RecyclerView时,没有任何内容出现。只有当我用LinearLayoutManager所有视图替换它时才显示。

这是我的LayoutManager

 public class MyLayoutManager extends RecyclerView.LayoutManager{

    @Override
    public RecyclerView.LayoutParams generateDefaultLayoutParams() {
        return new RecyclerView.LayoutParams(RecyclerView.LayoutParams.MATCH_PARENT, RecyclerView.LayoutParams.MATCH_PARENT);
    }

    @Override
    public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) {
        View view = recycler.getViewForPosition(0);
        addView(view);
        measureChildWithMargins(view, 0, 0);
        layoutDecorated(view, 0, 0, getWidth(), getHeight());
    }
}

请给我一个提示如何正确实施LayoutManager,谢谢。

3 个答案:

答案 0 :(得分:0)

毫无疑问,最好的方法是阅读 LinearLayoutManager GridLayoutManager

的源代码

答案 1 :(得分:0)

LayoutManager - 帮助您将项目定位在RecyclerView

enter image description here

RecyclerView需要有一个布局管理器和一个要实例化的适配器。布局管理器将项目视图放在RecyclerView内,并确定何时重用用户不再可见的项目视图。

RecyclerView提供了这些内置布局管理器:

  1. LinearLayoutManager在垂直或水平滚动列表中显示项目。
  2. GridLayoutManager显示网格中的项目。
  3. StaggeredGridLayoutManager以交错网格显示项目。
  4. 要创建自定义布局管理器,请扩展RecyclerView.LayoutManager类。

    这是一个很好的example

答案 2 :(得分:0)

尝试添加

setAutoMeasureEnabled(true)

检查您的recyclerview版本,