Skip to content

PullRefreshLayout 不显示Header和Footer #13

@boydos

Description

@boydos

如果在布局文件中没有声明 BaseHeaderView或BaseFooterView,而是通过代码 new相关View ,再采用pullRefreshLayout.setHeader(..) 或pullRefreshLayout.setFooter(..)进行赋值,会无法显示头部和底部,必须再addView一下才可以显示,而且是先setHead 或 setFooter 再addView。

或者修改PullRefreshLayout的setHeader和setFooter 为如下方法也可以解决:

public void setHeader(Refreshable header) {
    setHeader(header,true);
}

public void setFooter(Loadable footer) {
    setFooter(footer,true);
}

private void setHeader(Refreshable header,boolean add) {
    if (mHeader != null && isMyChild((View) mHeader)) {
        removeView((View) mHeader);
    }
    this.mHeader = header;
    mHeader.setPullRefreshLayout(this);
    if(add)super.addView((View)mHeader);
}

private void setFooter(Loadable footer,boolean add) {
    if (mFooter != null && isMyChild((View) mFooter)) {
        removeView((View) mFooter);
    }
    this.mFooter = footer;
    mFooter.setPullRefreshLayout(this);
    if(add)super.addView((View)mFooter);
}

@Override
public void addView(View child, int index, ViewGroup.LayoutParams params) {
    if (child instanceof Refreshable) {
        setHeader((Refreshable) child,false);
    } else if (child instanceof Loadable) {
        setFooter((Loadable) child,false);
    }
    super.addView(child, index, params);
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions