文章地址:https://mp.weixin.qq.com/s/G3BKLbu1gjIIf8-qY6DFBg
@Override
protected int getChildDrawingOrder(int childCount, int i) {
View view = getLayoutManager().getFocusedChild();
if (null == view) {
return super.getChildDrawingOrder(childCount, i);
}
int position = indexOfChild(view);
if (position < 0) {
return super.getChildDrawingOrder(childCount, i);
}
if (i == childCount - 1) {
return position;
}
if (i == position) {
return childCount - 1;
}
return super.getChildDrawingOrder(childCount, i);
}
文章中的这种实现 其实是把获取焦点的item与最后一个item的绘制顺序替换了,也会导致最后一个item的绘制顺序跟原有的item的绘制顺序也会变化,所以如果只是想把指定的item放到最后绘制,还是需要每个index都要重新计算的。
网友评论