2011-10-15 29 views
5

Tôi đang cố gắng lấy chiều rộng của nút có android:layout_width được đặt thành wrap_content. Khi tôi cố gắng làm điều đó trong onCreate() sử dụng getMeasuredWidth(), tôi nhận được một giá trị bằng không vì tôi nghĩ rằng chế độ xem chưa sẵn sàng.Android - nhận chiều rộng của nút được đặt thành wrap_content

Khi nào tôi sẽ nhận được chiều rộng? Có bất kỳ người nghe tôi có thể móc đến khi xem được thực hiện khởi tạo?

Trả lời

13

Bạn có thể thêm người quan sát cây vào bố cục. Điều này sẽ trả lại chiều rộng và chiều cao chính xác. onCreate được gọi trước khi bố trí các khung nhìn con được thực hiện. Vì vậy, chiều rộng và chiều cao chưa được tính toán. Để có được chiều cao và chiều rộng. Đặt phương thức này trên phương thức onCreate

LinearLayout layout = (LinearLayout)findViewById(R.id.YOUD VIEW ID); 
ViewTreeObserver vto = layout.getViewTreeObserver(); 
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
    @Override 
    public void onGlobalLayout() { 
     this.layout.getViewTreeObserver().removeGlobalOnLayoutListener(this); 
     int width = layout.getMeasuredWidth(); 
     int height = layout.getMeasuredHeight(); 

    } 
}); 
+1

FYI: 'removeGlobalOnLayoutListener' không được dùng trong các API mới hơn và bây giờ là' removeOnGlobalLayoutListener'. Để biết thêm thông tin: http://stackoverflow.com/a/16190337/487940 – harsimranb

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