Подтвердить что ты не робот

Установка z порядка просмотра с помощью bringChildToFront()

Я пытаюсь установить z-порядок элемента UI (т.е. View), чтобы он перекрывал другой элемент, но вызов ViewGroup.bringChildToFront() имеет странный побочный эффект... он перемещает элемент в быть последним элементом в родительском (ViewGroup). Это ошибка, ожидаемое поведение или что? Что еще более важно, как я могу установить порядок z или вид без этого неблагоприятного побочного эффекта?

4b9b3361

Ответ 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));

где дочерний - это представление, которое нужно перенести вперед.

Спасибо