根据下拉的程度去改变头布局高度
这个我真的研究了好久好久
其实本身来讲并不是特别难
如果下拉控件是自己写的话,那么这个东西可能不是那么难
但是现在我用的是handmark.pulltorefresh的下拉刷新控件
所以就比较麻烦了
刚开始是去看源码,想去搞懂他怎么写的,然后去控制各种条件
最后终于被我找到了
在PullToRefreshBase中找到setHeaderScroll方法,
protected final void setHeaderScroll(int value)
这里的这个int value其实就是headerView的高度,
但是向下拉的时候,是一个负的值
然后我们去写回调
public void setOnHeaderViewChangeListener(OnHeaderViewChangeListener onHeaderViewChangeListener) {
this.onHeaderViewChangeListener = onHeaderViewChangeListener;
}
private OnHeaderViewChangeListener onHeaderViewChangeListener;
public interface OnHeaderViewChangeListener {
public abstract void headerViewChange(int headerViewHeight);
}
然后我们在setHeaderScroll里面去回调headerViewChange方法
protected final void setHeaderScroll(int value) {
this.onHeaderViewChangeListener.headerViewChange(value);
}
然后就是页面里
我们首先要拿到这个背景的固定高度
headHeight = view_head_bg.getLayoutParams().height;
然后设置回调方法
sv.setOnHeaderViewChangeListener(new PullToRefreshBase.OnHeaderViewChangeListener() {
@Override
public void headerViewChange(int headerViewHeight) {
ViewGroup.LayoutParams layoutParams = view_head_bg.getLayoutParams();
layoutParams.height = headHeight - headerViewHeight;
view_head_bg.setLayoutParams(layoutParams);
}
});
大功告成