Qual é a maneira correta de substituir onMeasure ()? Já vi várias abordagens. Por exemplo, o Professional Android Development usa MeasureSpec para calcular as dimensões e termina com uma chamada para setMeasuredDimension (). Por exemplo:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
this.setMeasuredDimension(parentWidth/2, parentHeight);
}
Por outro lado, de acordo com esta postagem , a maneira "correta" é usar MeasureSpec, chamar setMeasuredDimensions (), seguido por uma chamada para setLayoutParams () e terminar com uma chamada para super.onMeasure (). Por exemplo:
@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);
}
Então, qual é o caminho certo? Nenhuma das abordagens funcionou 100% para mim.
Acho que realmente o que estou perguntando é: alguém conhece um tutorial que explica onMeasure (), layout, dimensões das visualizações filho etc.?