2010-09-18 28 views
12

Tôi đang cố gắng đặt thứ tự z của phần tử giao diện người dùng (tức là Chế độ xem) sao cho nó chồng chéo lên phần tử khác, nhưng gọi ViewGroup.bringChildToFront() có một hiệu ứng phụ lạ .... nó di chuyển phần tử này thành mục cuối cùng trong phần tử cha (nhóm ViewGroup). Đây có phải là lỗi, hành vi mong đợi hay không? Quan trọng hơn, làm cách nào tôi có thể đặt thứ tự z hoặc Chế độ xem mà không có hiệu ứng phụ không may này?thiết lập thứ tự z của View với bringChildToFront()

Trả lời

19

Đây là hành vi mong đợi. bringChildToFront() chỉ thay đổi chỉ mục của View trong phần cha của nó.

0

bringChildToFront(child) không làm gì ngoài thay đổi giá trị chỉ mục của trẻ.

Để mang một đứa trẻ vào phía trước mà không sử dụng showNext() hoặc showprevious(),

sử dụng

setDisplayedChild()indexOfChild() với nhau.

dụ

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

nơi conxem mà cần phải được đưa trước.

Cảm ơn

+8

Chỉ khi xem cha mẹ của bạn là một 'ViewFlipper'. –

14

Để gửi một cái nhìn tất cả các cách trở lại, làm như sau:

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)); 
    } 
} 
+7

"i" thay vì "0" tại 'vg.bringChildToFront (vg.getChildAt (0));' –

+0

gọi nó là 3 lần làm việc cho tôi. – usman

Các vấn đề liên quan