【发布时间】:2010-12-08 20:50:25
【问题描述】:
Android 中显然有一个 bug 会破坏 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 之上创建另一个 View,它似乎在我试图带来 ToFront() 的那个之上,但我不喜欢这个解决方案。
【问题讨论】:
标签: android layout view z-index viewgroup