¿Cuál es la forma correcta de anular onMeasure()? He visto varios enfoques. Por ejemplo, Professional Android Development usa MeasureSpec para calcular las dimensiones y luego finaliza con una llamada a setMeasuredDimension(). Por ejemplo:manera automática de reemplazar onMeasure()?
@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, como por this post, la forma "correcta" es utilizar MeasureSpec, llame setMeasuredDimensions(), seguido de una llamada a setLayoutParams(), y terminando 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 ha funcionado al 100% para mí.
Creo que realmente lo que estoy preguntando es si alguien sabe de un tutorial que explica onMeasure(), el diseño, las dimensiones de las vistas de los niños, etc.?
¿Le pareció útil/correcta la respuesta? ¿por qué no marcarlo como * la * respuesta? – superjos