Tôi đã nhận thấy rằng Android, WPF và Silverlight đều tuân theo mẫu bố cục hai chiều. Có một phương thức Measure() đệ quy được gọi để kích thước phần tử, có thể nhiều lần. Sau đó, một phương thức Layout/Arrange() đệ quy được gọi là đưa ra các vị trí chính xác của trẻ em trong kiểm soát cha mẹ của chúng, và cũng sẽ thiết lập kích thước cuối cùng của điều khiển.Bố cục giao diện người dùng hai lần: Tại sao?
Câu hỏi của tôi: tại sao điều này được chia thành hai lần, đặc biệt khi, đối với một số loại điều khiển, Measure() không thể tính kích thước thực tế của điều khiển mà không thực sự đặt vị trí của trẻ? Có một số loại trường hợp thiểu số bố trí được thực hiện bởi điều này?
Tôi đang cố tạo bộ công cụ giao diện người dùng của riêng mình và tôi hiện đang nghiêng về phía mẫu Bố cục một lần(), nhưng tôi muốn được thuyết phục rằng điều này có phải là khôn ngoan hay không.
Thanks for reading này :)
Sean
Đó là bit cuối cùng, "cuối cùng là thông báo cho từng phần tử của không gian được phân bổ", đó là phần quan trọng. Trình quản lý tiện ích không cho phép các điều khiển tự kích thước, nó chỉ cho phép chúng tạo ra các gợi ý. – moswald
Hmm .. Tôi nhận được cách trẻ có thể tham lam về kích thước chúng được phân bổ, và sau đó nó phụ thuộc vào cha mẹ để lấy ra đúng số lượng không gian. Tuy nhiên, bạn có thể đạt được điều này trong một thuật toán một lần bằng cách thực hiện một phép đo() của mỗi đứa trẻ, và sau đó bố cục cuối cùng() cho mỗi đứa trẻ, tất cả trong cuộc gọi layout() của cha mẹ. Điều này vẫn sẽ là một đệ quy duy nhất của cây, nhưng với hai lần cho mỗi bộ trẻ em. Tôi có nghĩ rằng điều này đạt được kết thúc giống như cách tiếp cận hai vượt qua, nhưng nó chỉ kém hiệu quả hơn? – Sean
Từ góc nhìn của ông bà, cha mẹ chỉ là một đứa trẻ khác mà nó muốn đo() và bố trí(). ;) – Bubblewrap