Qual è il modo corretto di sovrascrivere onMeasure ()? Ho visto vari approcci. Ad esempio, lo sviluppo Android professionale utilizza MeasureSpec per calcolare le dimensioni, quindi termina con una chiamata a setMeasuredDimension (). Per esempio:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
this.setMeasuredDimension(parentWidth/2, parentHeight);
}
D'altra parte, come in questo post , il modo "corretto" è usare MeasureSpec, chiamare setMeasuredDimensions (), seguito da una chiamata a setLayoutParams () e terminare con una chiamata a super.onMeasure (). Per esempio:
@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);
}
Allora qual è la strada giusta? Nessuno dei due approcci ha funzionato al 100% per me.
Immagino che davvero quello che sto chiedendo è qualcuno sa di un tutorial che spiega onMeasure (), layout, dimensioni delle viste figlio ecc.?