วิธีที่ถูกต้องในการแทนที่ onMeasure () คืออะไร? ฉันได้เห็นแนวทางต่างๆ ตัวอย่างเช่นProfessional Android Developmentใช้ MeasureSpec ในการคำนวณขนาดจากนั้นจึงจบลงด้วยการเรียก setMeasuredDimension () ตัวอย่างเช่น:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
this.setMeasuredDimension(parentWidth/2, parentHeight);
}
ในทางกลับกันตามโพสต์นี้วิธีที่ "ถูกต้อง" คือการใช้ MeasureSpec เรียก setMeasuredDimensions () ตามด้วยการเรียก setLayoutParams () และลงท้ายด้วยการเรียก super.onMeasure () ตัวอย่างเช่น:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
this.setMeasuredDimension(parentWidth/2, parentHeight);
this.setLayoutParams(new *ParentLayoutType*.LayoutParams(parentWidth/2,parentHeight));
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
วิธีไหนคือวิธีที่ถูกต้อง? ทั้งสองวิธีไม่ได้ผล 100% สำหรับฉัน
ฉันเดาว่าสิ่งที่ฉันถามจริงๆคือไม่มีใครรู้เกี่ยวกับบทช่วยสอนที่อธิบายเกี่ยวกับ onMeasure () เค้าโครงขนาดของมุมมองเด็ก ฯลฯ