mListView.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if (mHeadView != null) { int top = mHeadView.getTop(); mFloatView.setVisibility(View.VISIBLE); } if (firstVisibleItem == 1) { if (top + mScrollTopH <= 0) { mFloatView.setVisibility(View.VISIBLE); } else { mFloatView.setVisibility(View.GONE); } } else if (firstVisibleItem < 1) { mFloatView.setVisibility(View.GONE); } else { mFloatView.setVisibility(View.VISIBLE); } } } }); mHeadView = mInflater.inflate(R.layout.list_head_view, null); mHeadHeight = mResources.getDimensionPixelSize(R.dimen.list_head_height); mScrollTopH = mHeadHeight - mResources.getDimensionPixelSize(R.dimen.list_docked_height); mHeadView.setLayoutParams(new AbsListView.LayoutParams(LayoutParams.MATCH_PARENT, mHeadHeight)); mHomeListView.addHeaderView(mHeadView);