2013-11-25 14 views
5

Tôi có một số ViewGroup có thể có nhiều LinearLayout s. Và mỗi LinearLayout có thể có nhiều chế độ xem con lồng nhau. Những gì tôi muốn là, nếu bất kỳ xem (thậm chí sâu lồng nhau) bên trong một LinearLayout được tập trung, nó nên gọi một phương pháp tùy chỉnh của cha mẹ chính của nó LinearLayout.Thay đổi tiêu điểm xem cho trẻ em android

Điều cuối cùng tôi muốn làm là đặt OnFocusChangeListener trên mỗi chế độ xem con lồng nhau sâu duy nhất của LinearLayout và người nghe đó sẽ gọi phương thức tùy chỉnh của cha mẹ. Nhưng đó thực sự là cách xấu để đi.

Có phương pháp nào tôi có thể ghi đè phụ huynh LinearLayout được gọi mỗi khi có thay đổi tập trung vào chế độ xem của con lồng nhau không?

+0

Xin chào @xmen, vậy cuối cùng bạn đã làm gì? –

Trả lời

1

Hãy thử một cái gì đó tương tự như sau:

View v = getWindow().getCurrentFocus(); 
ViewParent parent = v.getParent(); 
while (parent != null) { 
    if (parent instanceof LinearLayout) { 
     LinearLayout l = (LinearLayout) parent; 
     l.myMethod(); 
     parent = l.getParent(); 
    } else if(parent instance of FrameLayout){ 

    } 
    // and so on 
    . 
    . 
    . 
} 
3

Bạn có thể sử dụng contentView.getViewTreeObserver().addOnGlobalFocusChangeListener() hoặc ghi đè ViewGroup.requestChildFocus() của ViewGroup root (requestChildFocus() được truyền dọc theo chuỗi mẹ xem).

+0

đây là cách tốt nhất để làm điều đó – henry74918

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