Существует, по-видимому, ошибка в Android, которая ломает View.bringToFront
.
Если у меня есть Виды, расположенные в GridView, и я хочу вывести Вид на передний план, вызвав метод takeToFront (), он может переместиться в нижнее правое положение в GridView.
Там происходит что-то неясное, поэтому я не могу использовать метод takeToFront (). Когда я этого не называю, все работает отлично. Но виды перекрываются - если я использую масштабную анимацию для увеличения вида, это частично скрывается видами снизу и справа.
Я проверил исходный код метода takeToFront, и он вызывает parent.bringChildToFront (...)
именно этот метод
public void bringChildToFront(View child) {
int index = indexOfChild(child);
if (index >= 0) {
removeFromArray(index);
addInArray(child, mChildrenCount);
child.mParent = this;
}
}
очевидно, удаляет вид из себя! Без пощады! Является ли ViewGroup настолько глупой, что она не может управлять Z-индексами каким-либо иным способом, который перемешивает элементы управления? Очевидно, что когда GridView удаляет своего дочернего элемента, а затем добавляет его снова, он помещается в конец таблицы!
Могу ли я что-нибудь сделать, чтобы показать View поверх других, не прибегая к каким-либо взломам? Одна вещь, которая приходит мне в голову, - это создать другой вид поверх GridView, который будет казаться выше того, который я пытаюсь привести ToFront (), но мне не нравится это решение.