Я пытаюсь установить z-порядок элемента UI (т.е. View), чтобы он перекрывал другой элемент, но вызов ViewGroup.bringChildToFront() имеет странный побочный эффект... он перемещает элемент в быть последним элементом в родительском (ViewGroup). Это ошибка, ожидаемое поведение или что? Что еще более важно, как я могу установить порядок z или вид без этого неблагоприятного побочного эффекта?
Установка z порядка просмотра с помощью bringChildToFront()
Ответ 1
Это ожидаемое поведение. Функция bringChildToFront() просто изменяет индекс представления внутри его родителя.
Ответ 2
Чтобы отправить изображение назад, сделайте следующее:
private void moveToBack(View currentView) {
ViewGroup viewGroup = ((ViewGroup) currentView.getParent());
int index = viewGroup.indexOfChild(currentView);
for(int i = 0; i<index; i++) {
viewGroup.bringChildToFront(viewGroup.getChildAt(i));
}
}
Ответ 3
bringChildToFront(child)
ничего не меняет значение индекса для дочернего элемента.
Чтобы вывести ребенка на передний план, не используя showNext()
или showprevious()
,
использовать
setDisplayedChild()
и indexOfChild()
вместе.
Пример
vf.setDisplayedChild(vf.indexOfChild(child));
где дочерний - это представление, которое нужно перенести вперед.
Спасибо