อีกทางเลือกหนึ่งสำหรับวิธีการทั่วไปคือเชื่อมต่อกับภาพวาดของมุมมอง
OnPreDrawListenerถูกเรียกหลายครั้งเมื่อแสดงมุมมองดังนั้นจึงไม่มีการวนซ้ำที่เฉพาะเจาะจงซึ่งมุมมองของคุณมีความกว้างหรือความสูงที่วัดได้ที่ถูกต้อง สิ่งนี้ต้องการให้คุณตรวจสอบอย่างต่อเนื่อง ( view.getMeasuredWidth() <= 0) หรือกำหนดขีด จำกัด ตามจำนวนครั้งที่คุณตรวจสอบว่ามีmeasuredWidthค่ามากกว่าศูนย์
นอกจากนี้ยังมีโอกาสที่จะไม่มีการดึงมุมมองซึ่งอาจบ่งบอกถึงปัญหาอื่น ๆ เกี่ยวกับรหัสของคุณ
final View view = [ACQUIRE REFERENCE]; // Must be declared final for inner class
ViewTreeObserver viewTreeObserver = view.getViewTreeObserver();
viewTreeObserver.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
    @Override
    public boolean onPreDraw() {
        if (view.getMeasuredWidth() > 0) {     
            view.getViewTreeObserver().removeOnPreDrawListener(this);
            int width = view.getMeasuredWidth();
            int height = view.getMeasuredHeight();
            //Do something with width and height here!
        }
        return true; // Continue with the draw pass, as not to stop it
    }
});