/** * Set header to be pinned at the top of the first visible item. * * @param viewIndex index of the header view * @param position is position of the header in pixels. */ public void setFadingHeader(int viewIndex, int position, boolean fade) { ensurePinnedHeaderLayout(viewIndex); View child = getChildAt(position - getFirstVisiblePosition()); if (child == null) return; PinnedHeader header = mHeaders[viewIndex]; header.visible = true; header.state = FADING; header.alpha = MAX_ALPHA; header.animating = false; int top = getTotalTopPinnedHeaderHeight(); header.y = top; if (fade) { int bottom = child.getBottom() - top; int headerHeight = header.height; if (bottom < headerHeight) { int portion = bottom - headerHeight; header.alpha = MAX_ALPHA * (headerHeight + portion) / headerHeight; header.y = top + portion; } } }
listView.setHeaderInvisible(index, false); } else { int listPosition = listView.getPositionAt(listView.getTotalTopPinnedHeaderHeight()); int position = listPosition - listView.getHeaderViewsCount();