ViewGroup 默认顺序绘制子 View,如何修改?什么场景
2020-07-18 本文已影响0人
菜鸟何时起飞
文章地址: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都要重新计算的。