将头部布局添加到listview的headview中。
例如:
mListView.addHeaderView(mHeadView);
初始化时隐藏头部:
mHeadView.setPadding(0, -mHeadHeight,0,0);
给listview设置onTouchListener事件:
mListView.setOnTouchListener(this);
在onTouchListener事件中,当下滑时通过修改padding,下滑显示布局,上滑隐藏。
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
lastMoveY = event.getY();
break;
case MotionEvent.ACTION_MOVE:
moveY = event.getY();
deltaY = moveY - lastMoveY;
currentPadding += deltaY;
Log.d("liuwei", "currentPadding is " + currentPadding);
if (deltaY > 0 ) {
mHeadView.setPadding(0, currentPadding, 0, 0);
} else {
mHeadView.setPadding(0, currentPadding, 0, 0);
}
lastMoveY = moveY;
break;
case MotionEvent.ACTION_UP:
break;
}
return true;
}
完整代码链接如下:
github链接