Android 中显然存在一个错误,它会破坏View.bringToFront
.
如果我将视图排列在 GridView 中,并希望通过调用 bringToFront() 将视图置于前面,它可能会移动到 GridView 的右下角。
那里发生了一些阴暗的事情,所以我不能使用bringToFront()。当我不调用它时,一切正常。但是视图重叠 - 如果我使用缩放动画来放大视图,它会被底部和右侧的视图部分遮挡。
我已经查看了 BringToFront 的源代码,它调用了 parent.bringChildToFront(...)
就是这个方法
public void bringChildToFront(View child) {
int index = indexOfChild(child);
if (index >= 0) {
removeFromArray(index);
addInArray(child, mChildrenCount);
child.mParent = this;
}
}
它显然从自身中删除了视图!毫不手软!ViewGroup 是否如此愚蠢以至于它无法以任何其他方式来管理 Z-indexes,从而改变控件?显然,当 GridView 删除它的子元素然后再次添加它时,它会被放置在 Grid 的末尾!
我有什么办法可以在不诉诸黑客攻击的情况下在其他人之上显示视图?我想到的一件事是在 GridView 上方创建另一个视图,它似乎在我试图带来的视图之上(),但我不喜欢这种解决方案。