установка z порядка просмотра с помощью метода takeChildToFront () - PullRequest
12 голосов
/ 18 сентября 2010

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

Ответы [ 3 ]

19 голосов
/ 18 сентября 2010

Это ожидаемое поведение.Метод takeChildToFront () просто меняет индекс представления внутри своего родителя.

14 голосов
/ 11 ноября 2012

Чтобы отправить представление полностью назад, сделайте это:

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));
    }
}
0 голосов
/ 13 июля 2011

bringChildToFront(child) ничего не делает, но изменяет значение индекса ребенка.

Чтобы вывести ребенка на фронт без использования showNext() или showprevious(),

use

setDisplayedChild() и indexOfChild() вместе.

пример

vf.setDisplayedChild(vf.indexOfChild(child));

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

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...