2012-05-02 33 views
11

Tôi cần quyền truy cập vào chiều rộng và chiều cao đã được đánh giá của tất cả thành phần trong chế độ xem Phân đoạn. Vì vậy, tôi cần một số thông báo mà cho tôi biết, rằng quan điểm của giai đoạn bố trí đoạn đã được thực hiện.Nhận chiều rộng và chiều cao của các thành phần trong chế độ xem Phân đoạn

Trong hoạt động tôi có thể sử dụng phương pháp vòng đời onWindowFocusChanged(boolean hasFocus), nhưng đoạn không có phương pháp này.

Cách duy nhất tôi tìm thấy là sử dụng getView().addOnLayoutChangeListener(). Nhưng nó gọi nhiều lần và chỉ cuộc gọi cuối cùng là hữu ích cho tôi.

Tồn tại bất kỳ cách nào tốt hơn cách gọi một số sau khi bố cục được thực hiện trong chế độ xem đoạn?

+0

Câu hỏi liên quan http://stackoverflow.com/questions/14397959/capture-layout-resize-before-api-11 –

Trả lời

1

Bạn thực sự có thể kích hoạt thẻ bố cục theo cách thủ công - bạn chỉ cần gọi View.measure(int,int) với các MeasureSpec phù hợp. Ví dụ, nếu Fragment là để được gắn liền với một cái nhìn mẹ parentView, và bạn muốn nó có cùng kích thước, bạn muốn làm điều này:

View fragmentView = fragment.getView(); 
fragmentView.measure(MeasureSpec.makeMeasureSpec(parentView.getMeasuredWidth(), 
               MeasureSpec.EXACTLY), 
        MeasureSpec.makeMeasureSpec(parentView.getMeasuredHeight(), 
               MeasureSpec.EXACTLY)); 

Thông tin thêm về cách thức đo lường/bố trí đi làm việc: http://developer.android.com/reference/android/view/View.html#Layout

+0

Nhưng biện pháp chỉ cung cấp kích thước được đề xuất, kích thước thực được biết sau khi vượt qua bố cục. Và tôi không cần nó chạy nó bằng tay, bởi vì Android chạy nó một lần nữa chính nó (tôi nghĩ). – ATom

+0

Nó thực sự không chỉ là một kích thước được đề nghị. Thước đo được sử dụng để cho biết rằng "đây là những gì bạn nhận được, sử dụng nó như bạn muốn". Ví dụ trong một ListView, ràng buộc cho chiều rộng là CHÍNH XÁC, và cho chiều cao nó là UNSPECIFIED. Bạn đúng rằng kích thước được đo không phải lúc nào cũng giống như kích thước được bố cục, nhưng hầu như luôn luôn như vậy. Tôi không thực sự chắc chắn những gì bạn đang cố gắng để làm gì? –

+0

Tôi chỉ cần được thông báo sau khi phân đoạn và nội dung của nó đã hoàn thành đo lường và bố trí vượt qua và tất cả các kích thước là cuối cùng. – ATom

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