Tôi đang cố gắng áp dụng hình động cho chế độ xem trong ứng dụng Android của mình sau khi hoạt động của tôi được tạo. Để làm điều này, tôi cần xác định kích thước hiện tại của chế độ xem và sau đó thiết lập một hình động để chia tỷ lệ từ kích thước hiện tại sang kích thước mới. Phần này phải được thực hiện trong thời gian chạy, vì chế độ xem tỷ lệ thành các kích cỡ khác nhau tùy thuộc vào đầu vào từ người dùng. Bố cục của tôi được định nghĩa bằng XML.
Đây có vẻ là một nhiệm vụ dễ dàng, và có rất nhiều câu hỏi SO liên quan đến vấn đề này mặc dù không có câu hỏi nào giải quyết được vấn đề của tôi, rõ ràng. Vì vậy, có lẽ tôi đang thiếu một cái gì đó rõ ràng. Tôi xử lý quan điểm của mình bằng cách:
ImageView myView = (ImageView) getWindow().findViewById(R.id.MyViewID);
Đây hoạt động tốt, nhưng khi gọi getWidth()
, getHeight()
, getMeasuredWidth()
, getLayoutParams().width
, vv, họ tất cả trở lại 0. Tôi cũng thử bằng tay gọi measure()
trên quan điểm tiếp theo là một cuộc gọi đến getMeasuredWidth()
, nhưng điều đó không có tác dụng.
Tôi đã thử gọi các phương thức này và kiểm tra đối tượng trong trình gỡ lỗi trong hoạt động của tôi onCreate()
và trong onPostCreate()
. Làm cách nào tôi có thể tìm ra kích thước chính xác của chế độ xem này trong thời gian chạy?
match_parent
). Trong trường hợp này, một giải pháp đơn giản hơn có thể được gọi một cách an toàn ngay cả trước khi Chế độ xem được rút ra (ví dụ: từ phương thức onCreate () của Activity) của bạn chỉ là sử dụng Display.getSize (); xem stackoverflow.com/a/30929599/5025060 để biết chi tiết. Tôi biết đây không phải là những gì @NikReiman yêu cầu, chỉ để lại một ghi chú cho những người có thể sử dụng phương pháp đơn giản này.