ngắn
Đo View bằng tay
view.measure(
View.MeasureSpec.makeMeasureSpec(recyclerViewWidth, View.MeasureSpec.EXACTLY),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
và có được chiều cao với view.getMeasuredHeight()
nền
Một quan điểm sẽ trả về một giá trị hợp lệ cho View.getHeight()
chỉ sau nó đã được được đo. Việc đo chính nó sẽ tự động xảy ra bởi hệ thống khi màn hình sắp được hiển thị trên màn hình.
Khi Android muốn hiển thị bố cục, nó sẽ đệ quy gọi hàm view.layout()
cho mỗi chế độ xem trong cây chế độ xem. Mỗi Phụ Huynh nói với con cái những ràng buộc mà họ có thể có (chiều rộng/chiều cao) và yêu cầu họ tự làm theo số view.measure()
. Do đó, chế độ xem sẽ lưu trữ các giá trị được đo BASED về các ràng buộc trong các thành viên được chỉ định (MeasuredHeight/Width). Lưu ý rằng tại thời điểm này, view.getMeasuredHeight()
sẽ giữ giá trị trong khi view.getHeight()
sẽ vẫn không hợp lệ. view.getHeight()
sẽ chỉ trả lại giá trị hợp lệ khi chế độ xem có chiều cao thực tế trong phân cấp UI.
Tóm tắt
Vì vậy, để biết chiều cao của một yếu tố xem, trước khi nó đã được đo và đặt ra bởi hệ thống, chúng tôi sẽ cần phải gọi view.measure()
chức năng bằng tay.
Hàm đo lường dự kiến 2 tham số bắt nguồn từ khung nhìn LayoutParams + ràng buộc gốc.
Trong mẫu mã trên, chúng tôi đang đo chế độ xem buộc chiều rộng của nó là CHÍNH XÁC chiều rộng của cha mẹ (RecycleView) và chiều cao không bị giới hạn.
Nguồn
2016-08-04 10:49:44
Có! Bạn đã lưu cho tôi rất nhiều dòng mã! Cám ơn – Titmael