¿Cuál es la forma correcta de anular onMeasure ()? He visto varios enfoques. Por ejemplo, Professional Android Development usa MeasureSpec para calcular las dimensiones, luego termina con una llamada a setMeasuredDimension (). Por ejemplo:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
this.setMeasuredDimension(parentWidth/2, parentHeight);
}
Por otro lado, según esta publicación , la forma "correcta" es usar MeasureSpec, llamar a setMeasuredDimensions (), seguido de una llamada a setLayoutParams (), y terminar con una llamada a super.onMeasure (). Por ejemplo:
@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);
}
Entonces, ¿cuál es la forma correcta? Ninguno de los enfoques me ha funcionado al 100%.
Supongo que realmente lo que estoy preguntando es si alguien sabe de un tutorial que explique onMeasure (), diseño, dimensiones de vistas secundarias, etc.