2010-09-18 53 views
12

我試圖設置一個UI元素(即視圖)的z順序,以便它將重疊另一個元素,但調用ViewGroup.bringChildToFront()有一個奇怪的副作用....它將元素移動到父項(ViewGroup)中的最後一項。這是一個錯誤,預期的行爲,還是什麼?更重要的是,如何在沒有這種不幸副作用的情況下設置z順序或視圖?使用bringChildToFront設置z的視圖順序

回答

19

這是預期的行爲。 bringChildToFront()只是改變其父級視圖的索引。

0

bringChildToFront(child)什麼都不做,只是改變了孩子的指數值。

爲了使孩子前不使用showNext()showprevious()

使用

setDisplayedChild()indexOfChild()在一起。

例如

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

其中視圖需要被帶到前面。

感謝

+8

只有當你的父視圖是一個'ViewFlipper'。在vg.bringChildToFront(vg.getChildAt(0)); – 2013-05-10 21:28:59

14

要發送一個視圖中的所有回來的路上,這樣做:

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

調用它3次爲我工作。 – usman 2013-05-22 10:25:30