Який правильний спосіб замінити onMeasure ()? Я бачив різні підходи. Наприклад, Професійна розробка Android використовує 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 (), макет, розміри дочірніх подань тощо?